本实验主要介绍在centos7下搭建Go的开发环境,并介绍了用go工具来获取、 构建并安装Go包及命令的标准方式。同时简要介绍如何使用git来进行开发管理。
在centos终端中直接使用yum包管理器安装,其他下载方法参考go官方网站。
sudo yum install golang
go version
创建一个Go的工作目录
mkdir $HOME/gowork
配置的环境变量,centos 中在$HOME目录下的配置文件 .bash_profile中添加环境变量 (对当前用户始终生效)
打开配置文件
sudo vi $HOME/.bash_profile
插入以下语句
export GOPATH=$HOME/gowork
export PATH=$PATH:$GOPATH/bin
保存并激活文件
source $HOME/.bash_profile
在写Go程序之前,我们需要简单了解些Go的工作空间,详细参考工作空间
总的来说工作空间是一个存放管理Go代码的目录,其中包含三个子目录:
src 目录包含Go的源文件,每个目录都代表了一个源码包
pkg 目录包含包对象,存放编译后的包和依赖包
bin 目录包含可执行命令,存放可执行对象。
go 工具用于构建源码包,并将其生成的二进制文件安装到 pkg 和 bin 目录中。
src 子目录通常包会含多种版本控制的代码仓库(例如Git或Mercurial), 以此来跟踪一个或多个源码包的开发。
创建基于github的源代码仓库,[github-user]根据你的github用户名填写
mkdir $GOPATH/src/github.com/[github-user]/Go/hello -p
在以上目录创建hello.go
package main
import "fmt"
func main() {
fmt.Printf("hello, world\n")
}
临时测试运行
$ go run hello.go
开发完成后可使用install命令安装运行
go install github.com/[github-user]/Go/
hello#运行
以下命令表示在src中创建工具包的目录,下载源码,独立工具包源码,安装工具包。
mkdir $GOPATH/src/golang.org/x/
go get -d github.com/golang/tools
cp $GOPATH/src/github.com/golang/tools $GOPATH/src/golang.org/x/ -rf
go install golang.org/x/tools/go/buildutil
安装gotour教程软件
go中的get命令自动下载并编译安装gotour项目,结果会直接生成可执行文件在bin目录中,由于之前配置过bin目录作为环境变量,直接输入gotour即可运行
go get github.com/Go-zh/tour/gotour
gotour #运行
建立库目录
mkdir $GOPATH/src/github.com/[github-user]/Go/stringutil/
在此目录下创建reverse.go文件
// stringutil 包含有用于处理字符串的工具函数。
package stringutil
// Reverse 将其实参字符串以符文为单位左右反转。
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/[github-user]/Go/stringutil
或者直接在该包的源码目录中执行:
$ go build
没有错误提示即编译正确
修改之前创建的hello.go文件
package main
import (
"fmt"
"github.com/[github-user]/Go/stringutil"
)
func main() {
fmt.Printf(stringutil.Reverse("!oG ,olleH"))
}
当我们重新安装hello.go,go 工具都会安装它所依赖的任何东西,即同时安装stringutil.go。
$ go install github.com/[github-user]/Go/hello
运行得到结果“hello,go!”.
更多信息见Go编程
Go拥有一个轻量级的测试框架,它由 go test 命令和 testing 包构成。
在$GOPATH/src/github.com/[github-user]/Go/stringutil/目录下创建测试文件reverse_test.go(注意测试文件名必须以_test.go结尾)
package stringutil
import "testing"
func TestReverse(t *testing.T) {
cases := []struct {
in, want string
}{
{"Hello, world", "dlrow ,olleH"},
{"Hello, 世界", "界世 ,olleH"},
{"", ""},
}
for _, c := range cases {
got := Reverse(c.in)
if got != c.want {
t.Errorf("Reverse(%q) == %q, want %q", c.in, got, c.want)
}
}
}
然后使用 go test 运行测试:
$ go test github.com/[github-user]/Go/stringutil
或者直接在该包的源码目录中执行:
$ go test
输出
ok github.com/[github-user]/Go/stringutil 0.002s
GitHub 是一个十分流行的面向开源及私有软件项目的托管平台。作为开源代码库以及版本控制系统,GitHub拥有众多开发者用户,GitHub是程序员管理软件开发以及寻找已有代码的首选平台,值得我们学习使用。
安装命令
yum install http://opensource.wandisco.com/centos/7/git/x86_64/wandisco-git-release-7-2.noarch.rpm
yum install git
git --version
配置信息
git config --global user.name [username]
git config --global user.email [email]
git config --list #查看配置信息
首先在github上注册账号并创建仓库,可以选择裸仓库或者初始化一个readme文档。
以下命令在上述本地Go目录中初始化本地仓库,绑定github账户上的远程仓库为origin,并拉取远程仓库的master分支到本地master分支,添加当前所有文件,进行第一次提交,最后推送到远程仓库。
git init
git remote add origin https://github.com/[github-user]/Go
git pull origin master:master
git add .
git commit -m "test-commit"
git push -u origin master
注意:请使用 https 协议操作远程仓库, 不要使用 git 协议。 请在使用网络资源时务必注意!
执行完我们可以在浏览器上看到远程仓库已经更新
Git使用帮助文档