go
1. Golang安装
2. Golang语言特性
2.1 优势:
-
可直接编译成机器码
-
不依赖其他库
-
直接运行即可部署
2.2 特点:
-
静态类型语言
- 编译的时候检查出来隐藏的大多数问题
-
天生支持并发
import( "fmt" "time" ) func goFunc(i int){ fmt.Println("goroutine",i,"...") } func main(){ for i := 0; i<10000; i++ { //开启10000并发协程 go goFunc(i) } }
-
高效GC
3. 语法新奇
3.1 Go语法
-
编译/执行(终端)
-
编译配置
od位置项目位置
-
编译
go build xxx.go
-
运行编译后的exe文件
。/xxx
-
直接运行(+编译)
go run xxx.go
-
3.1.1 变量
- var a int
- var a = “xxx”
- a := 100 (不能声明全局变量)
- 多变量声明
3.1.2常量
- const
- 枚举iota
3.1.3函数
-
多返回值
// 第一种多返回值(匿名) func doubleReturn() (int, int) { return 1, 2 } // 第二种多返回值 func doubleReturn2() (ret1 string, ret2 int) { ret1 = "100" ret2 = 200 return } // 第三种多返回值,返回类型相同 func doubleReturn3() (ret1, ret2 int) { ret1 = 100 ret2 = 200 return }
3.1.4函数加载过程
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5HpdpkSi-1660490632115)(C:\Users\70402\AppData\Roaming\Typora\typora-user-images\image-20220814152119216.png)]
- init()先于main()方法加载
- import包饿汉式加载
3.1.5 函数权限
- 函数名首字母大写—对外暴露(public)
- 函数名首字母小写—不对外暴露(private)
3.1.6 import别名
import (
//1.匿名导包,可以不调用,但是会调用init()方法
_ "project1/init/init1"
//2.包名赋值,调用时用新赋值的包名
myLib "project1/init/init2"
//3.直接将包导入到main包中,使用时可直接用方法名调用
. "project1/init/init3"
)
3.1.7 defer关键字
- 在函数执行后最后运行
- 可以存在多个defer,多个defer存在时遵循栈规则先入后出
- defer用来修饰函数
- defer和return同时存在时,return先触发,defer后触发