环境
go version go1.10.1 darwin/amd64
第一个库
写一个库然后在上篇文章中的代码中调用
第一步选择一个包路径然后创建包目录
上篇文章我使用的是这个目录github.com/durban.zhang,这里的话创建一个目录$GOPATH/src/github.com/durban.zhang/stringutil
$ mkdir $GOPATH/src/github.com/durban.zhang/stringutil
然后创建一个文件reverse.go,里面的内容如下
package stringutil
func Reverse(s string) string {
r := []rune(s)
for i, j := 0, len(r)-1; i < len(r)/2; i, j = i+1, j-1 {
r[i], r[j] = r[j], r[i]
}
return string(r)
}
写好后使用go build编译
go build github.com/durban.zhang/stringutil
或者,如果在当前目录的话,可以直接
go build
go build不会产生一个 output 文件,如果想要这样做的话,必须使用go install,产生的文件会在工作区的pkg目录。
确认stringutil包建立之后,修改hello.go,文件应该在*$GOPATH/src/github.com/durban.zhang/hello*这个目录下面,hello.go里面的内容修改如下
package main
import (
"fmt"
"github.com/user/stringutil"
)
func main() {
fmt.Printf(stringutil.Reverse("!oG ,olleH"))
}
每当go工具安装一个包或二进制文件时,它也会安装它所具有的任何依赖关系。
所以当你安装hello程序
$ go install github.com/durban.zhang/hello
stringutil包将会自动被安装
运行后会得到如下
$ hello
Hello, Go!
经过前面的操作后,工作区的目录结构应该会类似如下
bin/
hello # command executable
pkg/
darwin_amd64/ # this will reflect your OS and architecture
github.com/durban.zhang/
stringutil.a # package object
src/
github.com/durban.zhang/
hello/
hello.go # command source
stringutil/
reverse.go # package source
请注意,go install将stringutil.a对象放置在映射其源目录的pkg/darwin_amd64内的目录中。这是为了将来的调用工具可以找到包对象并避免不必要地重新编译包。
darwin_amd64部分可以帮助交叉编译,并且会反映您系统的操作系统和体系结构。
Go命令可执行文件是静态链接的;包对象不需要显示的来运行Go程序。
版权声明
由 durban创作并维护的 小绒毛的足迹博客采用创作共用保留署名-非商业-禁止演绎4.0国际许可证。
本文首发于 博客( https://www.xiaorongmao.com ),版权所有,侵权必究。