Golang入门

以Centos7为例,安装配置Go语言,使用Git进行版本控制,记录学习笔记。

服务计算第二次实验:安装 go 语言开发环境

Golang安装配置

安装Golang

1
2
3
4
5
6
# yum 安装
sudo yum install golang
# 检查
go version
# 安装位置
rpm -ql golang |more

配置工作空间

Go语言一个很重要的概念就是工作空间。

Go代码必须放在工作空间内。它其实就是一个目录,其中包含三个子目录:

  • src 目录包含Go的源文件,它们被组织成包(每个目录都对应一个包),
  • pkg 目录包含包对象,
  • bin 目录包含可执行命令。

go 工具用于构建源码包,并将其生成的二进制文件安装到 pkgbin 目录中。

src 子目录通常包会含多种版本控制的代码仓库(例如Git), 以此来跟踪一个或多个源码包的开发。

1、创建工作空间

1
$ mkdir $HOME/gowork  # 这里$HOME=~

2、配置的环境变量,对于 centos 在 ~/.profile 文件中添加,当然,我更习惯于在~/.bashrc中添加以下代码

1
2
export GOPATH=$HOME/gowork
export PATH=$PATH:$GOPATH/bin

然后执行这些配置

1
$ source ~/.profile     # or  source ~/.bashrc

3、检查配置

1
$ go env

然后输出应该如下图,重点看GOPATHGOROOT是否配置好。

1538066655152

4、安装Go相关工具

首先,golang.org应该是连接不上的,不然可以用go get -u golang.org/x/tools/...下载相关工具,其他的一些教程用的是go get -d github.com/golang/tools,然而我觉得最方便快捷的办法是用git clone,命令如下:

1
2
3
4
5
6
7
# 创建文件夹并进入该文件夹
mkdir $GOPATH/src/golang.org/x/
cd $GOPATH/src/golang.org/x/
# git clone from https://github.com/golang/tools.git
git clone https://github.com/golang/tools.git
# 安装
go install golang.org/x/tools/go/buildutil

这时,我们的工作空间下应该就能看到这一系列配置后生成的三个子目录了:

1538067710340

创建源代码目录:

1
$ mkdir $GOPATH/src/github.com/github-user/hello -p

至于这里,为什么是这样一个目录结构,虽然你现在不需要将代码发布到远程库上,但是将来你想要发布时,这会是个好习惯。

创建 hello.go

1
2
3
4
5
package main
import "fmt"
func main() {
fmt.Printf("hello, world\n")
}

在终端运行!

1
2
$ go run hello.go
hello, world

然而,除了使用run命令以外,我们还能使用install命令,利用go工具构建安装这个程序,这听起来比用run来跑代码,更像一个程序了。

1
2
3
4
# install
go install github.com/github-user/hello
# run
hello

两种不同的运行方式如图:

1538068111880

注意,你可以在系统的任何地方运行此命令。go 工具会根据 GOPATH 指定的工作空间,在 github.com/user/hello 包内查找源码。

install命令会构建 hello 命令,产生一个可执行的二进制文件。 接着它会将该二进制文件作为 hello(在 Windows 下则为 hello.exe)安装到工作空间的 bin 目录中。 在我们的例子中为 $GOPATH/bin/hello,具体一点就是 $HOME/gowork/bin/hello

1538068452650

由于我们已经将$GOPATH/bin加入了环境变量,所以能直接执行hello来运行这个程序。

Git远程仓库

安装Git

可以直接使用sudo yum install git,但是centos提供的git版本比较低,建议下载官网额源码编译安装最新版,安装方法如下:

1. 下载官方tar2.8git安装包

1
wget https://www.kernel.org/pub/software/scm/git/git-2.9.5.tar.gz

2. 安装依赖包

1
yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel gcc perl-ExtUtils-MakeMaker1

3. 执行安装操作

1
2
3
4
$ tar -zxvf git-2.9.5.tar.gz
$ cd git-2.9.5
$ make prefix=/opt/git all
$ sudo make prefix=/opt/git install

4. 配置环境变量

1
2
echo "export PATH=$PATH:/opt/git/bin" >> ~/.bashrc
source ~/.bashrc

5. 检查git版本

1538071108898

明显比原来直接yum安装的1.8.x要高级很多!

Git远程连接

创建本机sshkey,然后查看生成的key:

1
2
3
ssh-keygen -t rsa -C "youremail@example.com"
cd .ssh
cat id_ras.pub

将显示内容添加到github账户中,测试一下:

1538071381220

修改用户名和邮箱,可保持跟github账户一致:

1
2
$ git config --global user.name "Your Name"
$ git config --global user.email "email@example.com"

连接远程仓库:

1
git remote add origin http://github.com/username/project.git

git也安装好了,远程仓库也配置好了,这时我们再次进入go工作空间,进入我们创建好的第一个项目hello,执行以下命令:

1
2
3
4
git init  #初始化仓库
git add . #上传所有修改的文件,这里主要指hello.go
git commit -m "Hello Go~" #提交所有更改
git push origin master #推送到远程仓库

如此,我们的第一个go项目就推送到远程仓库啦~