文档章节

Go笔记-Go命令

漂泊尘埃
 漂泊尘埃
发布于 2017/02/27 16:04
字数 586
阅读 62
收藏 0

go generate

一个简单的例子:mkdir

package main

//go:generate mkdir ~/test

import (
	"fmt"
)

func main() {
	fmt.Println("go generate test finished.")
}

在命令行中执行

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

输出:

go/code/src/main.go
mkdir ~/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 main

import "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

© 著作权归作者所有

共有 人打赏支持
漂泊尘埃

漂泊尘埃

粉丝 5
博文 35
码字总数 70992
作品 0
朝阳
ubuntuvim/ape-note

ape-note 一个异常简洁的笔记应用,一个让你爱不释手的笔记应用,遇上我是你的荣幸。 项目安装 后2条命令用于安装项目所依赖的插件,这个过程可能比较慢,主要原因是要从外国的服务器上下载文...

ubuntuvim
2017/06/29
0
0
Linux常用基本指令——文件处理命令

书籍方面的推荐就不做介绍,免得别人说我有广告嫌疑。大家可以直接上百度,书籍和视频遍地都是,Linux这些方面的知识都是自己在学习视频和看书的总结,内容上可能会不完美。如果有更多的见解...

阳光罗诺
08/18
0
0
【CentOS 7笔记14】,其他#171026

hellopasswd --- 更改系统语言 键盘组合键 切换用户 4.其他 init [0123456] grep查找关键字 ~ 【CentOS 7基础笔记12】,几种特殊权限与软硬链接 【CentOS 7基础笔记13】,find用法和文件传输...

hellopasswd
2017/10/26
0
0
我有一个阿里云的优惠主机,可以用来干嘛?

感觉就做一个没有什么人看的博客太浪费,因为自己现在很少写博客了,笔记的话主要记在印象笔记上面,这个服务器1G1核20G硬盘,虽然比一般的云主机差点,但是比以前用的虚拟主机爽多了,偶尔在...

彩虹糖tang
2016/06/15
1K
11
Yoda:您的 Linux 系统命令行个人助理

不久前,我们介绍了一个名为 “Betty” 的命令行虚拟助手。今天,我偶然发现了一个类似的实用程序,叫做 “Yoda”。Yoda 是一个命令行个人助理,可以帮助您在 Linux 中完成一些琐碎的任务。它...

作者: Sk
04/29
0
0

没有更多内容

加载失败,请刷新页面

加载更多

jenkins+docker+nodejs项目的自动部署环境

1、服务器安装docker yum install docker 2、jenkins安装 //创建jenkins工作目录mkdir -p /var/www/jenkins///拉取docker jenkins镜像docker pull jenkins //设置目前权限(必须...

西园里的猫
10分钟前
1
0
 索引和锁底层原理 !

索引和锁底层原理 ! 一、索引 在之前,我对索引有以下的认知: 索引可以加快数据库的检索速度; 表经常进行INSERT/UPDATE/DELETE操作就不要建立索引了,换言之:索引会降低插入、删除、修改...

DemonsI
19分钟前
0
0
转载:Java实现的SFTP

JSch - Java实现的SFTP(文件上传详解篇):https://www.cnblogs.com/longyg/archive/2012/06/25/2556576.html JSch - Java实现的SFTP(文件下载详解篇):https://www.cnblogs.com/longyg/......

WJtiny
22分钟前
0
0
聊聊storm的AssignmentDistributionService

序 本文主要研究一下storm的AssignmentDistributionService AssignmentDistributionService storm-2.0.0/storm-server/src/main/java/org/apache/storm/nimbus/AssignmentDistributionServic......

go4it
23分钟前
0
0
完全跨域的单点登录(SSO)解决方案源码解析

本文介绍的是一种PHP的开源SSO解决方案,可完全跨域,实现较简洁,源码地址:https://github.com/legalthings/sso 实现原理 一共分为3个角色: Client - 用户的浏览器 Broker - 用户访问的网...

庞陆阳
23分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部