打开Ubuntu系统,首先要安装Go语言。
打开GO语言官网,下载Linux版本安装包。官网链接
下载AMD64位版本,后续插件安装中有部分工具只能运行在64位版本中,因此需要Ubuntu和go都是64位版本的。
点击linux-amd64版本即可开始下载,存储在Ubuntu系统中任意位置即可。
我将go的安装包放在了Download目录下,打开该目录,右键提取到此处。
解压完成后,复制解压出的文件夹中GO文件夹,放置在你想要安装GO的地方。我把它放在了Document文件夹下。
另外,在安装目录旁再创建一个文件夹,名称随意,我这里用的是gowork,用于存放Go的资源文件,即GOPATH路径。
接下来我们进行GO的环境配置部分。
打开终端,输入以下代码,对profile文件进行编辑。
sudo vim /etc/profile
并在打开的文件中,输入以下代码,其中,GOROOT代表的是GO安装文件的存放位置,GOPATH放的是资源目录的位置,即上述我们新创建的文件夹。大家根据自己的存放位置进行调整。
另外还值得注意的是 GOARCH项一定得是amd64,如果是386,证明你安装的go语言是32位版本的,后续会报错。
export GOPATH=/home/roger/Documents/gowork
export GOROOT=/home/roger/Documents/go
export GOARCH=amd64
export GOOS=linux
export GOTOOLS=$GOROOT/pkg/tool
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin
编辑完成后,保存并退出。重启电脑以重新加载该文件。注意,要重启电脑,重启电脑,重启电脑,重要的事情讲三遍!
重启完成后,打开终端,输入:
go env
至此,GO语言安装就已经完成了,接下来我们安装VSCode。
打开Ubuntu的应用商店,在搜索栏输入VSCode。
第一个就是我们需要的VSCode,点击进入并下载安装。
安装完成后,打开VSCode,在之前创建的gowork工作目录下,即GOPATH目录下,依次创建src/github.com/文件夹,再创建一个以自己的Github用户名为名的文件夹,我的用户名是Sclll,因此我创建了Sclll文件夹,之后的代码文件都将放在这个文件夹中。因为我想要写一个hello的测试文件,因此我又创建了一个hello目录。这个操作,在VSCode或者文件管理器中进行过都可以。
然后,我们编写我们第一个代码。在VSCode中hello文件夹内创建一个hello.go文件。
创建完成后,VSCode的右下角会提示你安装GO语言的支持插件,点击安装进行安装。
安装完成后,又会提示你安装GO tools,可以点击安装,但是最终会失败。如图。
因此需要进行手动安装。下面介绍手动安装的过程。
在GOPATH目录下,创建src/github.com/golang/文件夹,以及src/golang.org/x/文件夹。不存在的话可以手动创建每级目录。
打开终端,输入:
git clone github.com/golang/tools.git
使用该代码需要安装Git,如果未安装可以用apt-get获取一下。
下载完成后,可以通过文件管理器将Github.com/golang下的tools文件夹复制到golang.org/x文件夹下。
随后,在终端中执行
go install golang.org/x/tools/go/buildutil
执行完成,这个过程不会有任何提示,等待下一个可以输入的命令行出现时就表明完成了。
接下来我们再打开VSCode,会继续出现提示安装tools,这时候我们再进行安装,就会发现一片Success了。
但是,最后还是会出点问题,就是golint插件,会提示安装不成功,那我们额外安装一下这个插件。
在终端中输入
git clone https://github.com/golang/lint.git
等待克隆完成。
完成后,将克隆下来的lint文件夹复制到golang.org/x/文件夹中,并执行
go install golang.org/x/lint
即可完成安装,再打开VSCode就不会出现提示了。
在hello.go中输入以下代码:
package main
import "fmt"
func main() {
fmt.Printf("hello, world\n")
}
打开终端,执行
go get github.com/Go-zh/tour/gotour
如果不成功,可以用Git clone。
git clone https://github.com/Go-zh/tour
克隆完成后,定位到tour文件夹,执行
go install
tour
会发现跳出go tour的网页,即表明gotour安装成功。
首先,在我们的github用户名目录下创建stringutil库目录。
并在目录中创建reverse.go文件。
输入以下代码:
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)
}
package main
import (
"fmt"
"github.com/user/stringutil"
)
func main() {
fmt.Printf(stringutil.Reverse("!oG ,olleH"))
}
在stringutil文件夹中创建reverse_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 github.com/user/stringutil
本次实验花费了我较多的时间,主要是安装过程中有一个步骤弄错了。在配置profile文件的时候,默认拷贝了别人博客上的内容,将GOARCH的内容设置为了386,即32位版本的数值,导致后面VSCODE始终无法读取安装的工具。这个问题折腾了大概半天多的时间。期间查找了无数资料,均没有相关信息。这里我也想吐槽一点,网上发表的博客文章,同质化的问题太严重了,重复的内容写啊写,最后打开找到的都是一样的,很难获取有效信息。不过还好最终我发现了这个问题,并重新进行了配置。这个事情也警示了我,在查看别人提供的信息时,要进行理解,做自己的判断,盲目的复制粘贴,往往会出现一些莫名其妙的错误。