Go的基本语法

86 阅读3分钟

1.Go.mod是Golang1.11版本新引入的官方管理工具用于解决之前没有地方记录依赖包的管理,modules和传统的go.path不同,不需要包含例如src,bin这样的子目录,一个源代码目录甚至空目录都可以作为modules,只要其中包含有go.mod文件 1.1基本概念 import 路径名只是引用该包,仅仅是为了调用init()函数,所以无法通过包名来调用包中的其他函数,下划线在代码中的意思是忽略这个变量。 1.2值类型 bool int(32or64),int8,int16,int32,int64 unit(32or64),unit(btye),unit(16),unit(32) float32,float64 string,字符串底层是一个byte数组,所以可以和byte类型相互转换。字符串不能修改 complex64,complex128 array固定长度的数组 1.3引用类型(指针类型) slice切片,序列数组 map映射 chan管道 1.4Go语言声明方式 var(声明变量),const(常量类型),type(声明类型),func(声明函数) 1.Go.mod是Golang1.11版本新引入的官方管理工具用于解决之前没有地方记录依赖包的管理,modules和传统的go.path不同,不需要包含例如src,bin这样的子目录,一个源代码目录甚至空目录都可以作为modules,只要其中包含有go.mod文件 1.1基本概念 import 路径名只是引用该包,仅仅是为了调用init()函数,所以无法通过包名来调用包中的其他函数,下划线在代码中的意思是忽略这个变量。 1.2值类型 bool int(32or64),int8,int16,int32,int64 unit(32or64),unit(btye),unit(16),unit(32) float32,float64 string,字符串底层是一个byte数组,所以可以和byte类型相互转换。字符串不能修改 complex64,complex128 array固定长度的数组 1.3引用类型(指针类型) slice切片,序列数组 map映射 chan管道 1.4Go语言声明方式 var(声明变量),const(常量类型),type(声明类型),func(声明函数) 1.5强制类型转换 T(表达式),表示想要转换的类型,表达式包括变量,复杂算子和函数返回值 1.6指针 指针地址,指针类型,指针取值 &array得到数组的内存地址,取地址 *[]int获取内存地址对应值,取值 new 函数得到的是一个类型指针 1.7结构体 关键字type用来实现自定义类的操作 可以通过new来新建一个指针自定义类 1.8实现构造函数 type Studwnt struct{ name string age int subject string } 1.9方法 func(接受者变量,接受者类型)方法名(参数列表)(返回参数){ 函数体 } 指针方法原值,拷贝方法不改变原值 1.10并发编程 goroutine goroutine 只是由官方实现的超级"线程池"。

每个实例4~5KB的栈内存占用和由于实现机制而大幅减少的创建和销毁开销是go高并发的根本原因

java中:需要自己维护线程池和调度线程、上下文切换

goroutine内置调度和上下文切换的机制,不需要自己写进程、线程、协程,只需要把任务包装成一个函数,开启一个goroutine去执行这个函数

在调用函数的时候在前面加上go关键字,就可以为一个函数创建一个goroutine。