3. 打包和工具链(Go Tutorial)
来源:互联网 发布:企业海关数据免费查询 编辑:程序博客网 时间:2024/06/01 09:09
打包和工具链(Go Tutorial)
- 1 包
- 11 包名惯例
- 12 main 包
- 2 导入
- 21 远程导入
- 22 命名导入
- 3 函数 init
- 4 使用 Go 工具
- 5 进一步介绍 Go 开发工具
- 51 go vet
- 52 Go 代码格式化
- 53 Go 语言文档
- 7 依赖管理
3.1 包
所有 Go 语言的程序都会组织成若干组文件,每组文件被称为一个包。这样每个包的代码都可以作为很小的复用单元,被其他项目引用。
所有的 .go 文件,除了空行和注释,都应该在第一行声明自己所属的包。
同一目录下的所有 .go 文件必须声明为同一个包。不同包需放在不同的目录下。
3.1.1 包名惯例
- 包名应该使用目录名
- 包名需使用简洁、清晰且全小写的名字
- 并不需要所有包的名字都与别的包名不同,因为导入包时使用的是全路径,所以可区分同名的不同包
- 包导入后会使用默认的包名,但也可修改导入后的包名
3.1.2 main 包
在 Go 语言里,命名为 main
的包具有特殊的含义。Go 语言的编译承训会试图把这种名字为 main
的包编译为可执行文件。所有用 Go 语言编译的可执行程序都必须有一个名叫 main
的包。
如果 main
包里没有定义 main()
函数,那么程序就无法运行,也无法编译成可执行程序。
3.2 导入
import 语句会告诉编译器到磁盘的哪里去找想要导入的包。如果需要导入多个包,习惯上是将 import 语句包装在一个导入块中。
import ( "fmt" "strings")
编译器会使用 Go 环境变量设置的路径,通过引入的相对路径来查找磁盘上的包。
- 标准库中的包会在安装 Go 的位置找到
- Go 开发者创建的包会在
GOPATH
环境变量指定的目录里查找
需要注意的是,一旦编译器找到了一个满足 import
语句指定的包,就会停止进一步查找。编译器首先会查找 Go 的安装目录,再依次查找 GOPATH
变量列出的目录。
如果没有找到需要的包,那么试图对程序进行 run
或 build
时,编译器会报错。后面可通过 go get
命令来修正这种错误。
3.2.1 远程导入
import "github.com/spf13/viper"
用导入路径编译程序时,go build
命令会使用 GOPATH
的设置,在磁盘上搜索这个包。如果路径包含 URL,可以使用 Go 工具链从 DVCS 获取包,并把包的源代码保存在 GOPATH
指向的路径里与 URL 匹配的目录里,这个过程使用 go get
命令完成。
go get
将获取任意指定的 URL 的包,或者一个已经导入的包所依赖的其他包。由于 go get
这种递归特性,这个命令会扫描某个包的源码树,获取所有能找到的依赖包。
3.2.2 命名导入
命名导入是解决包名冲突的有效方法,同时也可简化包名。
Go 语言导入包有以下几种方式:
// 使用 test.Test()import "test/test"
// 使用 mongo.Test()import mongo "mongo/db"
// 对包的调用省略包名,可以直接调用包中的方法或变量import . "test/test"
// 当需要导入一个包,但是不需要引用这个包的标识符,使用空白标识符来替代import _ "test/test"
3.3 函数 init
每个包可以包含任意多个 init
函数,这些函数都会在程序执行开始的时候被调用。所有被编译器发现的 init 函数都会被安排在 main 函数之前执行。
init 函数在设置包、初始化变量或者其他要在程序运行之前优先完成的引导工作。
package mainimport ( "fmt" "os" "./test")func init() { fmt.Println("run before main")}func main() { fmt.Println(os.Getenv("GOPATH")) fmt.Println(test.Test())}
3.4 使用 Go 工具
go build
:编译程序,生成可执行文件。
go build hello.go
:指定 Go 文件go build
:使用当前目录来编译go build test/...
:编译 test 目录下的所有包
go clean
:清除编译生成的可执行文件。
go run hello.go
:编译完后需要生成运行可执行文件,使用 go run
命令可以将 go build
和运行这两步合二为一。
3.5 进一步介绍 Go 开发工具
3.5.1 go vet
go vet main.go
命令会帮开发人员检测代码的常见错误
- Printf 类函数调用时,类型匹配错误的参数
- 定义常用的方法时,方法签名的错误
- 错误的结构标签
- 没有指定字段名的结构字面量
3.5.2 Go 代码格式化
go fmt main.go
用来格式化代码,可以用来在保存文件或提交代码库前执行 go fmt
3.5.3 Go 语言文档
go doc tar
:命令行查看 tar 包文档
godoc -http:=6060
:在线查看文档
3.7 依赖管理
gb 是一个由 Go 社区成员开发的全新构建工具,初步理解与 composer
类似
- 3. 打包和工具链(Go Tutorial)
- 4. 数组、切片和映射(Go Tutorial)
- 1. Hello Go(Go Tutorial)
- Go工具和调试详解
- go-database-sql-tutorial
- 6. 并发(Go Tutorial)
- Go语言学习笔记(5)-go工具和项目
- 7. 并发模式(Go Tutorial)
- 8. 标准库(Go Tutorial)
- go工具
- android 多渠道打包工具 可打包libs和.so文件
- VS工具的打包和部署
- APK反编译二次打包工具和方法
- Android打包的相关工具和命令
- 5. Go 语言的类型系统(Go Tutorial)
- Go语言程序查看和诊断工具详解
- 打包工具
- 打包工具
- Java并发编程学习——《Java Concurrency in Practice》学习笔记 2.线程安全性
- android 音量设置工具类
- MFC的dll导出的界面不能输入
- HTML5教程-超文本标记语言编程
- JavaScript获取浏览器名称、版本等信息
- 3. 打包和工具链(Go Tutorial)
- python实现MongoDB数据同步到ES(Elasticsearch)
- linux下单机配置tomcat集群
- Java并发编程学习——《Java Concurrency in Practice》学习笔记 3.对象的共享
- Mqtt入门之请求连接信息Connect
- 欢迎使用CSDN-markdown编辑器
- Gson的@SerializedName和@Expose注解
- Java并发编程学习——《Java Concurrency in Practice》学习笔记 4.对象的组合
- HDOJ1029 Ignatius and the Princess IV