1.有关go语言总go install,go build 的区别
go install 主要针对不是 package main 即不是main方法的go文件进行编译 达到相应的包中,而go build 只能编译main 方法的go文件 ,并且只能 在 执行go build 命令的当前目录 执行编译后的文件 ./main(linux,mac) 或者是main.exe (windows)程序。 go install 还能编译main 方法的go文件,不管在哪执行该命令 都会把执行文件生成到 $GOPATH/bin 目录下 生成一个可执行的文件,
go install 在编译一个main方法的go文件中如果涉及到 自己写的包文件,那么会自动把该文件编译到相应的文件中生成一个*.a 文件.而go build 并不会生成一个*.a 中间的一个涉及到其他的包文件。如果想强制编译相应的包文件都被重新编译 那么就要用 go install -a 命令来强制编译文件。
2.针对go文件打包及相应包名的引用
举个例子 假如新建立的一个项目为app
目录为 : $GOPATH/src/app
在app目录下建立一个rtb 文件夹 //$GOPATH/src/app/rtb
在该文件下建立一个文件 rtb_index.go // $GOPATH/src/rtb/rtb_index.go
package rtb
import "fmt"
func Hello(){
fmt.Println("say hello")
}
那么对该文件进行打包编译 ,要运行 在 $GOPATH/src/rtb 目录下 执行 go install 以后会把该文件编译到 $GOPATH/bin/${GO_ARCH}/app/的目录下 生成一个rtb.a 文件
接下来接着创建一个文件
vim $GOPATH/src/app/main/main.go
package main
import(
"fmt"
"app/rtb" //此处一定要注意不能把app给省落,如果是 "rtb" 那么在编译的时候 会报找不到该包,GO默认的路径实在
$GOROOT /$GOPATH 中去找你导入的包
)
func main(){
fmt.Println(" run rtb.Hello()")
rtb.Hello()
}
然后执行 go build main.go 在改目录下生成 main,如果执行 go install 则在 $GOPATH/bin/main 可执行程序
3.区分$GOPATH,$GOROOT 的区别
$GOPATH 是go语言的工作目录(工作环境),而不是 go安装目录,另外$GOROOT 是go语言的安装目录
4.go clean
该命令用来移除该项目中编译后的文件,这样主要是在一些项目的开发中 用代码管理工具的时候主要是针对源码文件,而不比关系编译后的文件。
5.go fmt/gofmt
该命令主要是格式化go文件, gofmt -w mian.go 或者是gofmt -w src ,如果去掉 -w 那么不会将格式化的文件写入文件
6.go get
这个命令是用来动态获取远程代码包的,目前支持的有BitBucket、GitHub、Google Code和Launchpad。这个命令在内部实际上分成了两步操作:第一步是下载源码包,第二步是执行go install
7.go test
运行 文件中 *_test.go 文件,并且执行这些文件 ,主要用于测试用
8.go doc
该命令主要用于查看package 中的文档,godoc -http:=8080 在浏览器中输入 127.0.0.1:8080 就可以查看golang的帮助文档了