云服务器价格_云数据库_云主机【优惠】最新活动-搜集站云资讯

云存储_云存储怎么收费的_限量秒杀

小七 141 0

从外部设置Go变量

CloudFlare的DNS服务器RRDNS是用Go编写的,DNS团队用来生成一个名为版本.go在我们的Makefile中。版本.go看起来像这样://此文件由MAKEFILE自动生成。不要编辑。//+制造程序包版本变量(Version="2015.6.2-6-gfd7e2d1-dev"BuildTime="2015-06-16-0431 UTC")并用于在RRDNS中嵌入版本信息。使用git文件中的Makefile来描述它。它很管用,但很难看。今天我们注意到CloudFlare的另一个Go团队,即数据团队,有一种更聪明的方法,可以使用-X链接器选项将版本号烘焙到二进制文件中。可以使用-ldflags设置-X Go linker选项,用于设置所链接的Go程序中字符串变量的值。你是这样用的:-X主版本1.0.0条。一个简单的示例:假设您将此源文件另存为你好。去吧.主包装导入"fmt"var who="世界"函数main(){印刷品("你好,%s.\n",谁)}然后可以使用go-run(或其他生成命令,如go-build或go-install)和-ldflags选项修改who变量的值:$快跑你好。去吧你好,世界。$go run-ldflags="-X"梅因。谁云闪"你好。去吧你好,CloudFlare。格式是导入路径名字符串,所以可以在Go程序的任何地方设置任何字符串的值,而不仅仅是main。注意,从Go1.5开始,语法改为importpath.name=字符串. 旧样式仍然受支持,但链接器会抱怨。我很担心这在外部链接(例如在使用cgo时)上不起作用,但是正如我们在-ldflags="-linkmode=external-v"中看到的那样,Go链接器首先运行并处理我们的-X。$go build-x-ldflags="-x"梅因。谁CloudFlare-linkmode=external-v"你好。去吧WORK=/var/folders/v8/xdj2snz51sg2m2bnpmwl_91c000gn/T/go-build14964699mkdir-p$WORK/命令行参数/\u obj/cd/Users/filippo/tmp/X/usr/local/celal/go/1.4.2/libexec/pkg/tool/darwin_amd64/6g-o$WORK/命令行参数。a-trimpath$WORK-p命令行参数-complete-D\Users/filippo/tmp/X-I$WORK-pack/你好。去吧cd。/usr/local/Cellar/go/1.4.2/libexec/pkg/tool/darwin_amd64/6l-o hello-L$WORK-X主。嗨hi-linkmode=external-v-extld=clang$WORK/命令行参数#参数命令行收割台=-H1-T0x2000-D0x0-R0x1000在$WORK/runtime.a中搜索runtime.a在/usr/local/celal/go/1.4.2/libexec/pkg/darwin_amd64/runtime.a中搜索runtime.a0.06死码0.07 pclntab=284969字节,funcdata总计49800字节0.07度数据0.08符号大小=00.08符号大小=00.08重新锁定0.09重新锁定0.09阿斯姆B0.09代码块0.09基准0.09矮星0.09符号0.09头枕主机链接:叮当—m64—gdwarf—2—Wl、—不做馅饼、—pagezero有无大小,4000000—o—您好—被使用的自变量/var/folders/v8/XDJ2SNZ51SG2M2G2MBnPMWL U 91c0000gn/T//go linkMFNNCD/000000.o/var/folders/v8/XDJ2J2SNZ51SG2M2MBNPMWL U 91c0000gn/T//走链接mFNNCD/000001.o/var/folders/v8/v8/XDJ2SNZ51SG2M2BNMWl\U 91c0000gn/T//go link mFNNCD/go.o—g g g g g g g g g/g/g/g/g—g/g/g-O2-g-O2-L螺纹0.17 cpu时间33619符号美国存托凭证64号216程序大小23412活跃度数据你想成为下一个能让你学到新技巧的开发者吗?我们在伦敦、旧金山和新加坡招聘。