文档章节

Go笔记-Go命令

漂泊尘埃
 漂泊尘埃
发布于 2017/02/27 16:04
字数 586
阅读 50
收藏 0
点赞 0
评论 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
朝阳
Rails学习小结

学习rails也有一个多月了吧,断断续续地把《Agile web Development with Rails》看完了,看得不是很仔细,有些章节的内容看不懂,也就看得越发的粗糙了。在这个过程里中,简单的写了一些学习...

StevenMeng ⋅ 2013/02/14 ⋅ 0

ubuntuvim/ape-note

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

ubuntuvim ⋅ 2017/06/29 ⋅ 0

Yoda:您的 Linux 系统命令行个人助理

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

作者: Sk ⋅ 04/29 ⋅ 0

我有一个阿里云的优惠主机,可以用来干嘛?

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

彩虹糖tang ⋅ 2016/06/15 ⋅ 11

go programming language读书笔记一:go语言命令行参数

访问go programming language系列更多文件,点击下面链接 go programming language读书笔记系列 go语言内部把命令以及命令后面的参数提取到了os包的Args,os.Args是一个分片, 它的第一个元素...

d_watson ⋅ 2016/01/31 ⋅ 0

程序员如何打造属于自己的云笔记服务

摘要: 目录 前言 介绍 安装 启动服务 使用配置 APP访问 前言 在这个互联网知识呈爆炸增长的时代,作为一个程序员要掌握的知识越来越多,然再好的记性也不如烂笔头,有了笔记我们就是可以时常...

姬子玉 ⋅ 2017/11/28 ⋅ 0

程序猿成长计划--growing-up

程序猿成长计划 程序员成长计划包含了作为一名程序猿成长过程中的所学,我把这些以教程的形式开源出来,供大家一起学习、补充,共同成长。 三十分钟学会AWK Docker学习笔记-基础命令 一小时学...

mylxsw ⋅ 2016/11/30 ⋅ 0

Docker 学习笔记合集第一季 —— image container 基本操作

Docker 学习笔记合集第一季 —— image container 基本操作 Docker · chenhengjie123 · 于 1 年前发布 · 最后由 sanlengjingvv 于 1 年前回复 · 2262 次阅读 本帖已被设为精华帖! 学习 ...

小祁1124 ⋅ 2016/11/17 ⋅ 0

LoRa学习笔记_汇总

LoRa在今年(2016年)应该是最火的物联网技术,Semtech不停攻城略地,七大洲,哦,除了南极洲,所有地区都宣布要建立国家级的LoRa网络。虽然,我大中国的运营商要做NB-IoT,但是不乏中兴、富士...

iotisan ⋅ 2016/12/29 ⋅ 0

在Linux笔记本上执行这句命令能致设备永久变砖

上个月,有用户在Arch Linux论坛发帖提问,为什么他的笔记本在运行了一个简单的“rm -rf -no-preserve-root/”命令之后就完全没法启动了。有Linux基础的同学应该知道,运行这条命令其实很蠢,...

oschina ⋅ 2016/02/02 ⋅ 62

没有更多内容

加载失败,请刷新页面

加载更多

下一页

jsonrpc-4j代码解析

解析文件 AutoJsonRpcServiceImplExporter JsonServiceExporter AutoJsonRpcServiceImplExporter 路径:com.googlecode.jsonrpc4j.spring.AutoJsonRpcServiceImplExporter AutoJsonRpcServi......

郭恩洲_OSC博客 ⋅ 35分钟前 ⋅ 0

百度搜索

from selenium import webdriver import time brower=webdriver.Firefox() brower.get('http://www.baidu.com') input=brower.find_element_by_id('kw') input.send_keys('中南大学') time.s......

南桥北木 ⋅ 42分钟前 ⋅ 0

tomcat 日志记录器

1、日志记录器是记录消息的组件 日志记录器需要与某个servlet 容器相关联 2、Logger 接口 共定义了5种日志级别:FATAL、ERROR、WARNING、INFORMATION、DEBUGGER setVerbosity 设置级别 setC...

职业搬砖20年 ⋅ 43分钟前 ⋅ 0

Thrift RPC实战(三) Thrift序列化机制

1.Thrift基础架构 Thrift是一个客户端和服务端的架构体系,数据通过socket传输; 具有自己内部定义的传输协议规范(TProtocol)和传输数据标准(TTransports); 通过IDL脚本对传输数据的数据结构...

lemonLove ⋅ 44分钟前 ⋅ 0

网站建设就要像2018世界杯的俄罗斯队大杀四方[图]

今天心情不错,因为昨天晚上观看了世界杯比赛,尤其是对俄罗斯队的大杀四方感到十分霸气侧漏啊,因此我联想到了自己的博客网站,我的博客是去年年底上线的,一直想建设一个关于读书和读后感作...

原创小博客 ⋅ 53分钟前 ⋅ 0

Greenplum 三节点安装教程(非root用户)

Greenplum 三节点安装教程(非root用户) 环境准备 安装vmware,装三台centos 虚拟机设置: 主机名 IP 内存 硬盘 node1 Xxx1 2G 80G node2 Xxx2 2G 80G node3 Xxx3 2G 80G CSDN下载greenplum...

仔仔1993 ⋅ 53分钟前 ⋅ 0

linux 信号机制

signal(SIGPIPE, SIG_IGN); TCP是全双工的信道, 可以看作两条单工信道, TCP连接两端的两个端点各负责一条. 当对端调用close时, 虽然本意是关闭整个两条信道, 但本端只是收到FIN包. 按照TCP协...

xxdd ⋅ 54分钟前 ⋅ 0

SpringWind

环境搭建和系统部署

颖伙虫 ⋅ 今天 ⋅ 0

vim命令用法

第五章 vim命令 vim和vi几乎是一样的,唯一的区别就是当编辑一个文本时,使用vi不会显示颜色,而使用vim会显示颜色。 vim有三个模式:一般模式,编辑模式,命令模式。 系统最小化安装时没有安...

弓正 ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部