
Go 学习
GO 语言学习
学习
- 指令 : go tool tour
- 文档 : http://docscn.studygolang.com/doc/
安装
Linux
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
下载 > 解压 > 设置
下载:
wget https://dl.google.com/go/go1.13.5.linux-amd64.tar.gz
解压:
tar -C /usr/local/ -xzf go1.13.5.linux-amd64.tar.gz
> cd /usr/local/go
> bin/go version
> go version go1.13.5 linux/amd64
设置:
>> vim /etc/profile
>> 添加到最后如下指令
#go path
GOROOT=/usr/local/go
export PATH=$PATH:$GOROOT/bin
>> 退出 wq ,执行: source %
>> go env //可以正常打印内容 说明安装成功
GOROOT
GOPATH
Mac系统下
GOBIN
PATHMac 设置 GoPath : https://www.jianshu.com/p/5c1873eaf3ca
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34编辑~/.bash_profile文件:
export GOROOT=/usr/local/go
export GOPATH=/Users/haodalai/Desktop/Go/project
export GOBIN=
export PATH=$PATH:${GOPATH//://bin:}/bin
退出执行:
source ~/.bash_profile
Or
编辑~/.zshrc文件
export GOROOT=/usr/local/go
export GOPATH=/Users/haodalai/Desktop/Go/project
export GOBIN=
export PATH=$PATH:${GOPATH//://bin:}/bin
退出执行:
source ~/.zshrc
最终执行:
>> echo $GOPATH【注意: 以后开发的项目都放在$GOPATH 的 src 目录下】
Mac
Windows
指令操作
1 | go run |
Import 操作:
- 如果一个 main 导入其他包,包将被顺序导入
- 如果导入的包依赖其他包(包 B),会首先导入 B 包,然后初始化 B 包中常量和变量,最后如果 B 包中有 init,会自动执行 init()
- 如果包导入完成后对 main 中常量和变量进行初始化,执行 main 中的 init函数
- 如果一个包被导入多次则该包只会被导入一次
- import 别名 “.” “_”
1
2
3
4别名:将导入的包命名为另一个容易记忆的别名
点操作: .标识的包导入后,调用该包中函数时可以省略前缀包名
下划线(_)操作: 导入该包,但不导入整个包,而是执行包中的 init 函数此无法通过包名来调用包中的其他函数
使用下划线操作往往为了注册包中的引擎,让外部可以方便地使用
变量代码
- 全局变量需要加上 var 方法体内则可以不用加上
- 大写字母开头可以被包内其他文件导入,小写则不行
常量
- 类型:显示 隐式
1
2
3
4显式:const identifier [type] = value
隐式:const identifier = value (通常叫无类型常量)
常量可以使用内置表达式定义 : 例如 len() unsafe.Sizeof()
常量范围目前只支持布尔,数字,字符串
特殊常量 iota 使用
- iota在 const 关键字出现时将被重置为0
- const 中每新增一行常量声明将使 iota 计数一次
- iota 常见用法
1
2
3
41. 跳值使用法
2. 插队使用法
3. 表达式隐式使用法
4. 单行使用法
编程
例子1 : Http:HelloWorld
1 | package main |
例子2 : 多线程 + 线程间通信
1 | package main |
例子3 : 数组的内部排序
1 | package main |
例子4 : 单元测试操作
1 | package main |
例子5 : 基准测试
- 参考链接 : http://c.biancheng.net/view/124.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32/**
参考链接 : http://c.biancheng.net/view/124.html
基准测试:
1.一定需要方法名称 : Benchmark开头
2.执行的指令:
go test -v -bench=.
go test -v -bench=. jz_test.go
增加自定义时间:
go test -v -bench=. -benchtime=5s jz_test.go
*/
func BenchmarkAdd(b *testing.B) {
var n int
for i:=0;i<b.N;i++ {
n++
}
}
/**
执行:
go test -v -bench=.
打印的内容:
goos: darwin
goarch: amd64
BenchmarkAdd-16 1000000000 0.238 ns/op
PASS
测试说明:
执行了: 1000000000 次
每次的操作时间: 0.238 ns
*/
感谢您的阅读,本文由 左之右 版权所有。如若转载,请注明出处:左之右(https://zuoyoulai.github.io/2019/12/29/Go-Study/)