GO语言基础笔记
GO语言是由谷歌开发的一门语言。
- 天然支持高性能,高并发。
- 标准库丰富,不需要依赖大量第三方库。
- 可以通过协程优化性能。
- 学习成本低,这个比较重要,但是深入理解还是需要大量时间。
- 大量云原生组件都是由go语言编写,如k8s,docker等
go的环境安装就省略了。因为本人也是学java的,所以过程中会拿golang跟java做一些对比。
首先写一个HelloWorld,如果直接用关键字Println来打印的话会有一些奇奇怪怪的bug
package main // 声明当前代码所在的包为 main
import "fmt" // 导入 fmt 包,用于打印输出
func main() { // 程序入口函数,范围为整个程序
fmt.Println("HelloWorld") // 调用 fmt 包中的函数 Println 打印输出 HelloWorld
}
golang的数据类型以及声明方式(声明的变量没有使用会报错)
//它会自动推导数据类型
var demo = "string"
demo1 := "string"
var demo2,demo3 int = 2,3//声明多个并且定义类型
还有什么bool,byte,就不一一展示了,定义常量用的是const关键字,我比较在意的是和java不一样,golang有in8,int16这样的数据类型,可以合理分配大小
for循环的几种方式:
//这种不带退出条件的就是死循环,非常简洁
for {
fmt.Println(666)
}
//这种没什么好说,略
for i := 0; i < 666; i++ {
fmt.Println(666)
}
//这种可以遍历容器中的元素,i是下标,i2是元素
arr := []int{1, 2, 3, 4, 5}//声明一个不固定长度的数组
for i, i2 := range arr {
fmt.Println(i, i2)
}
//这样也可以,但要注意退出条件,比如break关键字,下面是个死循环
n := 66
for n <= 88 {
fmt.Println(66)
}
创建容器类型,一般用make函数创建,这个函数有三个参数(容器类型,长度,容量),下面是一个示例
slice := make([]int, 3, 5)//创建一个长度为 3,容量为 5 的整型切片,初始化会赋值3个0
Map := make(map[string]int,5)创建一个map容器,它是kv键值对类型,这种类型运用广泛,string是key,int是value
Map["one"]=66 //map的赋值方法
map2:=map[string]int{"one":1,"two":2}//初始化
value, ok := map2["one"]//第二个参数是一个bool,用来判断是否有这个Key
用for循环遍历map的话会有两个返回值,第一个是key,第二个value
其他的大差不差,细节得自己深挖,golang有指针类型,但灵活性没有c++强