开始 , 创建一个工作区目录并设置相应的gopath 。您的工作区可以位于任何你喜欢的地方,但我们将在这个文档中使用/data/work 。请注意,这不能是您的“Go安装”路径相同 。
mkdir -p /data/work
export GOPATH=/data/work
为了方便 。添加工作区的bin到PATH中
export PATH=$PATH:$GOPATH/bin
4、导入路径
一个导入路径是唯一标识一个包的字符串 。一个包的导入路径对应于它在工作区内或远程存储库中的位置 。
从标准库的软件包中给出了短的导入路径等 。对于您自己的包 , 您必须选择不可能和未来添加到标准库或其他外部库的基础路径冲突的路径 。
注意,你不需要将你的代码发布到一个远程存储库之前,你可以建立它 。这只是一个很好的习惯来组织你的代码 , 如果你有一天会出版它 。在实践中 , 你可以选择任何任意的路径名称,只要它是唯一的标准库和更大的去生态系统 。
我们将使用github.com/user作为我们的基本路径 。在您的工作区中创建一个目录,以保持源代码:
mkdir -p $GOPATH/src/github.com/user
5、第一个项目
编译并运行一个简单的程序 , 首先选择一个包的路径(我们将使用github.com/user/hello)和创建在您的工作区相应的软件包目录:
mkdir $GOPATH/src/github.com/user/hello
创建名叫hello.go的文件,上面创建过 , 此处略过 。
cd $GOPATH/src/github.com/user/hello
go install
$GOPATH/bin/hello
或者:
hello
如果你使用的是一个源代码管理系统,现在是一个很好的时间来初始化一个存储库 , 添加文件 , 并提交你的第一次更改 。再次,这一步是可选的:您不需要使用源代码管理来写代码 。
cd $GOPATH/src/github.com/user/hello
git init
Initialized empty Git repository in /data/work/src/github.com/user/hello/.git/
git add hello.go
git commit -m "first commit"
[master (root-commit) bbfb477] first commit
6、first library
mkdir $GOPATH/src/github.com/user/stringutil
下一步,在目录下创建一个名为reverse.go文件中有下列内容:
// Package stringutil contains utility functions for working with strings.
package stringutil
// Reverse returns its argument string reversed rune-wise left to right.
func Reverse(s string) string {
r := []rune(s)
for i, j := 0, len(r)-1; ilen(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/user/stringutil
如果当前位置源码包目录 , 只需要:
go build
上面操作并不会产生一个输出文件,必须使用go install,把包和对象输出到工作去的pkg目录内
确认stringutil包创建完成后,修改原始hello.go,使用stringutil包:
package main
import (
"fmt"
"github.com/user/stringutil"
)
func main() {
fmt.Printf(stringutil.Reverse("\n !oG ,olleH"))
}
无论使用go安装包还是二进制文件 , 所有相关的依赖都会自动安装 。所以当你安装hello程序时:
$ go install github.com/user/hello
对应的stringutil包会自动安装好 。
执行新的hello程序,可以看到消息已经被反转
# hello
Hello, Go!
完成上面操作之后,工作区应该为:
├── bin
│└── hello# command executable
├── pkg
│└── linux_amd64# this will reflect your OS and architecture
│└── github.com
│└── user
│└── stringutil.a# package object
└── src
└── github.com
推荐阅读
- chatgpt写稿可以投稿吗,chest投稿
- phpcms的模板文件,php网站模板下载后怎么用
- 滕州政协公众号关注,滕州政协公众号关注网
- thinkphpcrm系统源码,thinkphp5源码解读
- c语言子函数互相调用 c语言子函数调用主函数数组
- 新媒体如何写共鸣,新媒体写作公式
- 用flutter的app,用flutter的人多吗
- C语言仅在函数中可见 c语言允许在函数中定义函数吗
- 包含postgresql9.6uuid的词条