十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
go语言方便的地方之一就是容易部署, 编译成二进制文件,丢到服务器,就像一个内建的bash程序,不用安装依赖,不用部署环境,不用管理源码,直接就运行了。这也会产生一个问题, 经过年深日久的运行后,某天需要修改一个功能,可能最初开发的同事几经易手,那么,如何从这个二进制文件找到源码和对应的信息呢?
创新互联专注于沿滩网站建设服务及定制,我们拥有丰富的企业做网站经验。 热诚为您提供沿滩营销型网站建设,沿滩网站制作、沿滩网页设计、沿滩网站官网定制、微信小程序定制开发服务,打造沿滩网络公司原创品牌,更为您提供沿滩网站排名全网营销落地服务。
本文主要就是解决这个问题,利用 go build 的 -ldflags -X, 把程序及相关的环境信息编译进项目的的help信息中,当程序执行-v时,有如下的输出:
文件准备完成后, 执行下面的命令,把文件加入git版本管理中,如果不加git管理, build.sh中的脚本会执行报错:
现在执行build.sh 编译二进制文件,执行完成后,可见文件目录中多了一个文件 version-example
命令如下:
直接在终端中输入gohelp即可显示所有的go命令以及相应命令功能简介,主要有下面这些:
build:编译包和依赖;clean:移除对象文件;doc:显示包或者符号的文档;env:打印go的环境信息;bug:启动错误报告;fix:运行gotoolfix;fmt:运行gofmt进行格式化;generate:从processingsource生成go文件
get:下载并安装包和依赖;install:编译并安装包和依赖;list:列出包;run:编译并运行go程序;test:运行测试;tool:运行go提供的工具;version:显示go的版本;vet:运行gotoolvet;命令的使用方式为:gocommand[args],除此之外,可以使用gohelp;来显示指定命令的更多帮助信息。;在运行gohelp时,不仅仅打印了这些命令的基本信息,还给出了一些概念的帮助信息:;c:Go和c的相互调用;buildmode:构建模式的描述;filetype:文件类型;gopath:GOPATH环境变量
environment:环境变量;importpath:导入路径语法;packages:包列表的描述;testflag:测试符号描述;testfunc:测试函数描述等。
一.几种公共方法
1)Print: 输出到控制台(不接受任何格式化,它等价于对每一个操作数都应用 %v)
print 在golang中 是属于输出到标准错误流中并打印,官方不建议写程序时候用它。可以再debug时候用
2)Println: 输出到控制台并换行
3)Printf : 只可以打印出格式化的字符串。只可以直接输出字符串类型的变量(不可以输出整形变量和整形等)
4)Sprintf:格式化并返回一个字符串而不带任何输出
5)Fprintf:来格式化并输出到 io.Writers 而不是 os.Stdout
二.带占位符输出--网址:
和python差不多的道理,这里简单补充
v 值的默认格式
%+v 添加字段名(如结构体)
%#v 相应值的Go语法表示
%T 相应值的类型的Go语法表示
%% 字面上的百分号,并非值的占位符
%c 相应Unicode码点所表示的字符
%x 十六进制表示,字母形式为小写 a-f
%X 十六进制表示,字母形式为大写 A-F
%U Unicode格式:U+1234,等同于 "U+%04X"