Service Computing课程博客(二) - 安装Ubuntu下Go语言环境

"Start to learn coding with Go-lang"

Posted by Palette on September 21, 2018

In order to write codes and projects with Go-lang, we need to install Go environment firstly….

Ubuntu16.04私有云上安装配置Go语言开发环境

友情链接

实验需求

  1. 通过学习Linux终端命令行Shell命令的编写,实现Go语言环境安装,开发路径和环境变量配置以及基本的Go语言程序编写,实现hello.go并熟悉基本的gp语句,成功跑出结果。

  2. 安装程序开发所需的编辑器,包括VSCodeSublime Text3,以及基本的vim。本文中会给出所有的编辑器安装教程,读者不必全部安装,只需要根据自己的编程习惯进行选择即可。

  3. 安装必要的工具和插件,其中包括git,以及有利于我们深入学习Go语言开发的go tour工具。

实验准备

  • 基本掌握Shell命令的编写,如:apt-get, mkdir, echo, cp, source等,如果对这些命令功能还不熟悉,则需要移步到Ubuntu常用命令大全,对其内容进行涉猎即可。

  • 拥有自己的私有云,并且操作系统为Ubuntu。(若还没有自己的私有云,可以移步到我的上一篇博客 – Win10环境下搭建Ubuntu私有云)

实验配置过程

1. 安装Go语言环境

  • 开启VirtualBox虚拟机,在Win10宿主机上使用ssh连接Ubuntu私有云,开始命令行操作。首先,我们需要获取Golang的依赖包,之后直接执行安装,命令如下:
    $ sudo apt-get install golang-go
    
  • 执行完该条语句之后,Ubuntu 16.04系统中go环境依赖包会默认安装在路径:/usr/lib/go,不然则使用rpm查看安装路径:
    $ rpm -ql golang-go |more
    
  • 设置GoPath路径值 为了保证Go语言正常进行保存,运行等操作,我们需要设置其环境变量值,其中最重要的即设置GoPath值(放置Go源程序路径),GoRoot值(Go安装环境根路径)
    1. 创建Go代码文件存储路径,当然如果你想更改存储文件名,或者直接修改存储位置也是可以的
      $ mkdir $HOME/gowork
      
    2. 第二步打开系统路径设置文件bashrc,记得使用sudo命令进入管理员身份
      $ sudo vim ~/.bashrc
      
    3. 最后设置GOPATH环境变量值,路径值填入第一步创建的文件名
      export GOPATH="$HOME/gowork"
      export GOROOT="/usr/lib/go"
      
    4. 执行配置
      $ source ~/.bashrc
      
    5. 检查Go环境配置情况,如果GOPATH,GOROOT值正确,则配置成功
      $ go env
      

      img

2. 创建简单Go程序文件,测试环境

  • 此处我们首先使用vim进行hello.go的编写创建,并使用go run查看结果

      package main
    
      import "fmt"
    
      func main() {
      	fmt.Printf("hello, world\n")
      }
    
  • 该源程序中,第一条语句为包声明,指明该源文件属于哪个包;第二条则是对fmt包的依赖引入;其后则是main函数的编写,内部使用fmt包的标准输出函数Printf打印语句。编写完成之后,编译运行该程序。
    $ go run hello.go
    hello, world
    
  • 也可以使用go build产生可执行的exe文件。 img

  • 同时使用go install可以指定在$GOPATH$GOROOT下的某个文件夹内的go源程序包的安装,完成之后即到对应的bin文件夹内部访问。
    $ go install github.com/golang
    $ $GOPATH/bin/golang
    Hello, World!
    

    img

  • 为了编写并使用Go语言的第一个自定义库,我们需要在对应的src文件夹里面生成对应包名的子文件夹,并将写好的库源程序放入其中。此处为了实现可重用性,使用shell脚本makePackage.sh,目标文件结构为:
    Basic-Go/
        pratices/
              *`target-file`.go* (old path of it)
    bin/
        helloworld.exe
    pkg/
    src/
        `target-file`/
              `target-file`.go  (new path of it)
    
  • 编写对应脚本,同时在当前源程序工作空间创建新Go源程序,记得修改对应包名为你所需要的库名(此处以官网stringutil示例)。
    # 接收文件名
    echo "----------------- Make Package For Go -----------------"
    read -p "Please input package name: " name
    mkdir -p ../../src/${name}   # 此处的生成路径可以更改,因为每个人的目录结构可能不同
    mv ./${name}.go ../../src/${name}/  # 同上
    echo "OK"
    
    // 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)
    }
    
  • 运行makePackage脚本,使用go build编译生成对应库文件。执行完成之后即可在其他Go程序中引用该库文件。
    $ /bin/sh makePackage.sh
    ----------------- Make Package For Go -----------------
    Please input package name: stringutil
    OK
    $ go build $GOPATH/src/stringutil
    
    package main
    
    import (
          "fmt"
    
          "stringutil"
    )
    
    func main(){
          fmt.Printf(stringutil.Reserve("!oG,olleH"));
    }
    
  • 进行Go源程序的测试过程,使用go test命令,创建名为XXX_test.go文件,程序需要testing包进行测试添加,约定测试程序内部至少有一个名为TestXXX的函数,接收参数为*testing.T类型。

    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 stringutil
    ok    stringutil 0.165s
    

3. 安装Go语言开发所需编辑器

  1. VSCode安装步骤,采用PPA获取vscode依赖包环境,也可以参考vs官网给出的方法传送门
    $ sudo add-apt-repository ppa:ubuntu-desktop/ubuntu-make
    $ sudo apt-get update
    $ sudo apt-get install ubuntu-make
    $ sudo umake web visual-studio-code
    
  2. Sublime Text3安装步骤,同样用了PPA
    $ sudo add-apt-repository ppa:webupd8team/sublime-text-3 
    $ sudo apt-get update   #更新可用软件库
    $ sudo apt-get install sublime-text-installer   #安装Sublime Text 3
    
  3. 以上两种编辑器皆为非原生编辑器,首次使用时在图形化桌面搜索关键字打开并锁定到桌面,或者直接到安装路径打开即可。 接下来介绍Linux系统原生编辑器vim的配置。
    • 打开vim配置文件
      $ sudo vim /etc/vim/vimrc
      
    • 配置所需功能
      set tabstop=4         #Tab宽度为4
      set nobackup          #禁止生成临时文件
      set cursorline        #突出显示当前行
      set ruler             #右下角显示当前行数
      set autoindent        #换行自动缩进
      set shiftwidth=4      #Shift宽度为4
      set ai                #设置自动对齐
      set showmatch         #高亮当前匹配括号
      set foldmethod=syntax #语法折叠
      set foldlevel=100     #设置代码折叠层数        
      set number            #显示行数
      inoremap ' ''<ESC>i   #单引号补全
      inoremap " ""<ESC>i   #双引号补全
      inoremap ( ()<ESC>i   #括号补全
      
    • 执行修改
      $ source /etc/vim/vimrc
      

4. 安装必要的工具和插件

  • 安装Git客户端
    $ sudo apt-get install git
    
  • 设置Git常用账户信息
    $ git config --global user.name `your-user-name`
    $ git config --global user.email `your-email`
    
  • Git查看当前文件夹状态,添加改动,上传,以及提交
    $ git status
    $ git add .  #此步根据需要更改添加路径
    $ git commit -m 'Change'  ##此步根据需要修改上传信息
    $ git push `your-remote-repo-name` master
    

    img

  • 配置VSCode所需工具
    1. 首次进入VSCode使用界面,会提示需要安装Go开发插件,但是无法翻墙的小伙伴是安装不了的,所以需要在github上拉下来安装。
      $ mkdir $GOROOT/src/golang.org/x/
      $ go get -d github.com/golang/tools
      $ cp $GOROOT/src/github.com/golang/tools $GOROOT/src/golang.org/x/ -rf
      
    2. 安装所需工具包(上述shell命令之所以使用$GOROOT,是因为下述安装过程依赖于许多Go程序包,它们并非在$GOPATH上)
      $ go install golang.org/x/tools/go/buildutil
      
    3. 重启VSCode,按照步骤安装插件,完成。
  • 安装运行go tour
    $ go get github.com/Go-zh/tour/gotour
    $ go tour
    

5. Go语言开发所需文档资料