博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Go笔记-Go命令
阅读量:7052 次
发布时间:2019-06-28

本文共 2287 字,大约阅读时间需要 7 分钟。

hot3.png

go generate

一个简单的例子:mkdir

package main//go:generate mkdir ~/testimport (	"fmt")func main() {	fmt.Println("go generate test finished.")}

在命令行中执行

go generate -v -n -x /代码路径/main.go

输出:

go/code/src/main.gomkdir ~/test

test文件夹也生成了。

在程序中执行命令

cmd := exec.Command("hugo", "-t=hyde")	cmd.Dir = "D:/work/hugo/mysite"	out, err := cmd.CombinedOutput()	if err != nil {		fmt.Println(err)		return	}	fmt.Println(string(out))

go test

go test internal/config -run=TestKindsString
  • 在src目录的父目录下
  • config是目录,下面有一些 *_test.go 文件
  • -run 可以指定执行哪个测试函数。

go fmt

格式化整个项目并将结果写入文件: gofmt -l -d -w src/abc

golint

golint不能对目录的子目录执行,对所有目录执行的shell方法:

find src/push-sms -name "*.go" -exec golint {} \;

go build

ldflags

采用:go build -ldflags "-s -w" 这种方式编译。

解释一下参数的意思:

  • -ldflags: 表示将后面的参数传给连接器(5/6/8l)
  • -s:去掉符号信息
  • -w:去掉DWARF调试信息 注意:

-s 去掉符号表(这样panic时,stack trace就没有任何文件名/行号信息了,这等价于普通C/C+=程序被strip的效果)

-w 去掉DWARF调试信息,得到的程序就不能用gdb调试了

两个可以分开使用

参数列表可以使用下面的语句查看:

go tool compile -help

gcflags

关闭编译器代码优化

go build -gcflags "-N" -o test test.go

关闭函数内联

go build -gcflags "-l" -o test test.go

同时制定

go build -gcflags "-N -l" -o test test.go

查看编译优化信息

go build -gcflags "-m" test.go

go list

查看项目引用包

go list -json

go tool objdump

查看生成的汇编代码

package mainimport "fmt"func main() {	fmt.Println(*test())}func test() *int {	x := new(int)	*x = 0xAABB	return x}
go tool objdump -s "main\.test" test

输出:

TEXT main.test(SB) /Users/zhangyuchen/tmp/test.go	test.go:9	0x20f0	65488b0c25a0080000	GS MOVQ GS:0x8a0, CX	test.go:9	0x20f9	483b6110		CMPQ 0x10(CX), SP	test.go:9	0x20fd	7639			JBE 0x2138	test.go:9	0x20ff	4883ec18		SUBQ $0x18, SP	test.go:9	0x2103	48896c2410		MOVQ BP, 0x10(SP)	test.go:9	0x2108	488d6c2410		LEAQ 0x10(SP), BP	test.go:10	0x210d	488d054c700800		LEAQ 0x8704c(IP), AX	test.go:10	0x2114	48890424		MOVQ AX, 0(SP)	test.go:10	0x2118	e8c3c90000		CALL runtime.newobject(SB)	test.go:10	0x211d	488b442408		MOVQ 0x8(SP), AX	test.go:11	0x2122	48c700bbaa0000		MOVQ $runtime.mapaccess2_fast64+459(SB), 0(AX)	test.go:12	0x2129	4889442420		MOVQ AX, 0x20(SP)	test.go:12	0x212e	488b6c2410		MOVQ 0x10(SP), BP	test.go:12	0x2133	4883c418		ADDQ $0x18, SP	test.go:12	0x2137	c3			RET	test.go:9	0x2138	e803c90400		CALL runtime.morestack_noctxt(SB)	test.go:9	0x213d	ebb1			JMP main.test(SB)	:-1		0x213f	cc			INT $0x3

转载于:https://my.oschina.net/u/2004526/blog/847118

你可能感兴趣的文章
将博客搬至CSDN
查看>>
JQuery 修改 form 表单的 action 的值,并提交
查看>>
IOS 百度地图导入最新 SDK 2.9 报错
查看>>
android 显示 网络图片
查看>>
安装MySQLdb模块-python
查看>>
ubuntu快捷键
查看>>
IOS——生成智能调试输出
查看>>
杀毒软件Avast被曝严重的0day漏洞
查看>>
NDK Caused by: java.lang.UnsatisfiedLinkError:
查看>>
oracle timestamp相减
查看>>
【swing】 BoxLayout布局
查看>>
Android 属性动画(Property Animation)完全解析 (下)
查看>>
GC overhead limit exceeded
查看>>
JDBC学习之三
查看>>
CSS3 渐变(Gradients)
查看>>
Windows7关机、重启、待机、休眠命令
查看>>
如何在Xcode8上安装插件
查看>>
Java Base
查看>>
mysql优化sql语句查询的方法(一)
查看>>
既然存在,就是合理的
查看>>