go run
-v 列出被编译的代码包名称
-a 强制执行
-work 显示临时工作目录并不删除它
-x 打印命令 并执行过它的
-n 打印编译的命令但不执行他们
-p n: 并行编译 其中 n 为并行的数量
go build 编译源码文件或代码包
go install 编译并安装代码或者源码文件
查看执行文件:
ls $GOBIN
go get 从远程代码仓库上下载安装代码包
下载到$GOPATH下 第一个文件的的 src文件夹中
-d 只执行下载动作不执行安装动作
-fix 下载后先执行修正动作 再进行编译安装
-U 利用网络来更新已有的代码包及其依赖包
Import 操作:
如果一个 main 导入其他包,包将被顺序导入
如果导入的包依赖其他包(包 B),会首先导入 B 包,然后初始化 B 包中常量和变量,最后如果 B 包中有 init,会自动执行 init()
package main
import("fmt""sort")funcmain(){//排序
arr:=[]int{45,23,6,12,1,905,16,75}
sort.Ints(arr)for_,val:=range arr {
fmt.Println(val)}}
例子4 : 单元测试操作
package main
import"testing"/**
1.文件名称必须以: _test 作为后缀
2.忽略测试
t.SkipNow()
3.执行指令: go test -v
4.注意点:
方法名称一定需要 : Test_xxxx 名称 Test 为首字母大写
方法体参数内容 : t *testing.T
5.日志显示: t.Log() t.Error()
*/funcTestRepeat(t *testing.T){
a :=repeat("a")
t.Log("a 的值"+ a)
k :="aaaaa"if a == k {
t.Logf("测试成功,a 的值为 : %s",a)}}funcTestPk(t *testing.T){
t.Log( t.Name(),"开始执行 Pt 的内容")for i:=0;i<9;i++{repeat("a")}}funcrepeat(s string)string{var result stringfor i:=0; i<5;i++{
result+="a"}return result
}funcTestAdd(t *testing.T){//忽略测试//t.SkipNow()
t.Log(t.Name(),"Begin....")
a :=2
b :=3ifadd(a,b)!=5{
t.Errorf("result %d ",add(a, b))}
t.Logf("a + b is : %d",add(a,b))
t.Log(t.Name(),"end....")}funcadd(a,b int)int{return a + b
}/**
go test -v
打印结果:
=== RUN TestRepeat
--- PASS: TestRepeat (0.00s)
lx_test.go:18: a 的值aaaaa
lx_test.go:21: 测试成功,a 的值为 : aaaaa
=== RUN TestPk
--- PASS: TestPk (0.00s)
lx_test.go:27: TestPk 开始执行 Pt 的内容
=== RUN TestAdd
--- PASS: TestAdd (0.00s)
lx_test.go:45: TestAdd Begin....
lx_test.go:51: a + b is : 5
lx_test.go:52: TestAdd end....
PASS
*/
例子5 : 基准测试
参考链接 : http://c.biancheng.net/view/124.html
/**
参考链接 : 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
*/funcBenchmarkAdd(b *testing.B){var n intfor 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
*/