GO语言基础笔记(上) | 青训营

GO语言特点:

  1. 高性能、高并发不需要寻找第三方库来进行开发应用,只需使用标准库
  2. 语法简单,学习曲线平缓类似于c语言,并对其进行简化
  3. 丰富的标准库稳定性,兼容性有保障 | 迭代快
  4. 完善的工具链编译,代码格式化,代码补充提示等
  5. 静态链接只需拷贝编译后的唯一一个可执行文件即可运行 | 体积小
  6. 快速编译远远快于c++
  7. 跨平台Mac,Windows,Linux,Android,Ios,路由器等 | 交叉编译)
  8. 垃圾回收无需考虑内存释放
  9. 各公司广泛应用字节跳动,腾讯,美团,滴滴,谷歌,B站等

GO环境配置

参考csdn上的环境配置教学

链接: (16条消息) GO语言环境配置_微凉.@_@的博客-CSDN博客

笔者使用的是vscode进行开发

如果觉得配置环境过于麻烦,也可以考虑使用线上编译器

链接:工作台 - 1024Code

GO基础语法

package main 为程序的入口包,入口文件,每个程序必备

import{ \\\ } 这里用来导入标准库 如"fmt"为输入输出库 类似c++中的#include<iostream>

func main(){} 这里为主函数,类似于c++中的int main(){}

func main(){ fmt.Println("hello,world"} 即可在屏幕上输出hello,world

变量的声明

go 复制代码
func main() {
	var a int = 1   
	var b = "abc"
	var c = true
	d := "1234"
	fmt.Println(a, b, c, d) //1 abc true 1234
}

结构体声明

go 复制代码
type point struct{
    x,y int
}

var a int = 1 与c++语法不同,变量的类型如int是放在后面 也可以不声明变量类型,则会自动适配类型

d := "1234" 也可以像这样,直接使用:=也可以声明变量

输出时除了fmt.Println(变量名) 外,还可以使用fmt.Printf("%v",变量名) 所有变量均可以使用%v输出, 结构体具体的内容则可以使用%+v或者%#v来输出

go 复制代码
func main() {
	s := point{1, 2}
	fmt.Printf("%+v\n", s)
	fmt.Printf("%#v\n", s)
}

分别输出{x:1 y:2}main.point{x:1, y:2}

if else

go 复制代码
	if 7%2 == 1 {
		fmt.Println("yes")
	} else {
		fmt.Println("no")
	}

与c++类似,只是if后面不需要加括号()

循环(for循环)

Go语言只有一种循环--for循环

go 复制代码
for j := 1; j < 6; j++ {
		fmt.Println(j)
	}

与c++类似,还是不加括号()

switch分支结构

go 复制代码
func main() {
	a := 1
	switch a {
	case 1:
		fmt.Println("1")
	case 2:
		fmt.Println("2")
	default:
		fmt.Println("out")
	}
}

switch后面跟了变量名的,case 后面判断的就是该变量是否等于这个值

go 复制代码
func main() {
	a := 1
	switch {
	case a < 0:
		fmt.Println("<0")
	case a < 1:
		fmt.Println(">=0&&<1")
	default:
		fmt.Println(">=1")
	}
}

switch后面没有跟变量名的,case就相当于if语句

注意: 与c++不同点在于,go的switch中不需要在每个case里面加break,go会自动break

数组

go 复制代码
func main() {
	var a [5]int
	for i := 0; i < 5; i++ {
		a[i] = i
	}
	fmt.Println(a)
	b := [5]int{1, 2, 3, 4, 5}
	fmt.Println(b)
}

二维数组也是类似的,与c++差别不大,注意命名时的语法就行,数组实际的使用次数并不多

后面的语法基础知识会放在下一篇笔记来写

总结:

Go语言写起来会明显感觉比c++更加简短(每一个语句后面不需要加分号了),并且对于变量的声明也显得更加方便,无论是什么类型的变量都可以统一用:=来声明,输出时也很方便,可以直接使用fmt.Println(a)后面直接加变量名就可以完整输出了,数组的输出也是这样,不用像c++一样要用一个循环才能输出数组的所有元素,使用fmt.Printf("%v",a)%v也时可以输出任意类型的,这些都比c语言中的printf()更加方便快捷,也更方便入手,入手Go语言的时候就是要格外注意它的命名语法和c++不同,相对来说还是很好学习的

相关推荐
千慌百风定乾坤1 天前
Go 语言入门指南:基础语法和常用特性解析(下) | 豆包MarsCode AI刷题
青训营笔记
FOFO1 天前
青训营笔记 | HTML语义化的案例分析: 粗略地手绘分析juejin.cn首页 | 豆包MarsCode AI 刷题
青训营笔记
滑滑滑3 天前
后端实践-优化一个已有的 Go 程序提高其性能 | 豆包MarsCode AI刷题
青训营笔记
柠檬柠檬3 天前
Go 语言入门指南:基础语法和常用特性解析 | 豆包MarsCode AI刷题
青训营笔记
用户967136399653 天前
计算最小步长丨豆包MarsCodeAI刷题
青训营笔记
用户52975799354724 天前
字节跳动青训营刷题笔记2| 豆包MarsCode AI刷题
青训营笔记
clearcold4 天前
浅谈对LangChain中Model I/O的见解 | 豆包MarsCode AI刷题
青训营笔记
夭要7夜宵4 天前
【字节青训营】 Go 进阶语言:并发概述、Goroutine、Channel、协程池 | 豆包MarsCode AI刷题
青训营笔记
用户336901104445 天前
数字分组求和题解 | 豆包MarsCode AI刷题
青训营笔记
dnxb1235 天前
GO语言工程实践课后作业:实现思路、代码以及路径记录 | 豆包MarsCode AI刷题
青训营笔记