ubuntu下安装go语言开发环境

环境

VirtualBox
Ubuntu 18.04

安装golang

使用系统包管理工具安装golang,这样的好处是即使不是最新版本,也不影响正常使用

$ sudo apt-get install golang

安装完成后使用go version命令查看版本

$ go version

在这里插入图片

创建工作空间

创建工作空间

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

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

使用mkdir命令创建工作空间

$ mkdir $HOME/go

配置GOPATH环境变量

GOPATH环境变量指明了你工作空间的位置(注意这个位置不能与你go安装目录相同)

$ export GOPATH=$HOME/go

将此工作空间的 bin 子目录添加到你的 PATH 中

$ export PATH=$PATH:$GOPATH/bin

然后执行配置

$ source $HOME/.profile

配置成功后可以用 go env检查配置

$ go env

在这里插入图片描述

创建包路径

在工作空间里创建一个文件夹来存放你的源文件

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

创建Hello World!

先选择包路径,然后在对应文件夹里创建文件

$ mkdir $GOPATH/src/github.com/user/hello

在hello目录中创建hello.go的文件
hello.go

package main

import "fmt"

func main() {
	fmt.Printf("Hello World!\n")
}

然后进入hello目录运行文件

$ go run hello.go

在这里插入图片描述

安装必要工具和插件

安装git

$ sudo apt-get install git

下载源码

# 创建文件夹(该命令要加-p,因为文件目录还不存在)
$ mkdir -p $GOPATH/src/golang.org/x/
# 下载源码
$ go get -d github.com/golang/tools
# copy 
$ cp $GOPATH/src/github.com/golang/tools $GOPATH/src/golang.org/x/ -rf

安装工具包

$ go install golang.org/x/tools/go/buildutil

安装并运行hello程序

$ go install github.com/user/hello

这条命令会创建一个名为hello的可执行二进制文件,并安装到工作空间的bin文件下,并且会构建一条hello命令
在这里插入图片描述
注意:当你更改你的文件后必须重新构建你的程序,否则可执行二进制还是之前的文件,文件执行结果不会改变

安装go tour

$ go get github.com/Go-zh/tour/gotour
$ gotour

在这里插入图片描述

我的第一个包与测试

你的第一个库

编写一个属于你自己的库,并让hello程序来使用它
选择包路径并创建目录

$ mkdir $GOPATH/src/github.com/user/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/user/stringutil

修改之前的hello程序,使用刚才建立的库

package main

import (
	"fmt"

	"github.com/user/stringutil"
)

func main() {
	fmt.Printf(stringutil.Reverse("!oG ,olleH"))
}

用go install重新安装hello文件

$ go install github.com/user/hello

在这里插入图片描述

测试

Go拥有一个轻量级的测试框架,它由 go test 命令和 testing 包构成。

你可以通过创建一个名字以 _test.go 结尾的,包含名为 TestXXX 且签名为 func (t *testing.T) 函数的文件来编写测试。 测试框架会运行每一个这样的函数;若该函数调用了像 t.Error 或 t.Fail 这样表示失败的函数,此测试即表示失败。

我们可通过创建文件 $GOPATH/src/github.com/user/stringutil/reverse_test.go 来为 stringutil 添加测试

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/user/stringutil

在这里插入图片描述

问题小结

1.在创建工作空间和目录文件时注意路径的正确性,如果创建文件时路径不存在要加上-p参数
2.每次修改程序时要重新go install后,构建的临时指令才会更新,否则仍然运行之前的可执行文件

猜你喜欢

转载自blog.csdn.net/weixin_43980838/article/details/108694987