【Go语言学习】配置Go语言开发环境,并写第一个包

安装 golang并配置环境变量

参考课程网站给出的教程

下载Go

可以到Go官方网站、或者Go中国项目组下载不同版本的Go,可以按照中文安装指引参考。
以下给出在Ubuntu下一些简要安装说明。
如果是下载安装包,则到下载目录中执行以下命令:
$ tar -C /usr/local -xzf go$VERSION.$OS-$ARCH.tar.gz
也可以通过系统包管理工具安装,不过版本可能不是最新的:
$ sudo apt install golang

安装完成之后,使用以下命令测试是否成功安装:
$ go version

配置环境变量

首先需要创建一个工作空间,当然能路径你自己设置,下面给出参考:
$ mkdir $HOME/gowork
然后配置环境变量:

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

如果直接在命令行打下命令的话,下次开启电脑又会恢复原样,所以需要在~/.bashrc文件中最后的位置添加这两条命令。(修改该文件需要root权限)如下图所示:
bashrc
执行配置,重启一下:

$ source $HOME/.profile

检查环境是否配好:
$ go env
在这里插入图片描述

创建第一个go程序

首先创建源代码目录(命名供参考):
$ mkdir $GOPATH/src/github.com/github-user/hello -p

创建hello.go文件,并将以下代码写入:

package main

import "fmt"

func main() {
    fmt.Printf("hello, world\n")
}

执行:
$ go run hello.go

安装VScode插件

VScode安装的步骤就不详细展开了,可以参考官方文档
进入VScode,打开相应Go工作目录,打开.go文件,会有相应提示安装Go的扩展程序,按照提示安装,会发现有部分无法安装!由于网络原因,不能获取相应的资源。
所以需要手动安装:
首先在%GOPATH%\src\目录下,建立路径golang.org\x
在该路径下,将github上的工具包克隆到本地:

git clone https://github.com/golang/tools.git
git clone https://github.com/golang/lint.git

然后使用go install命令安装相应的包。
如要安装golint,则到golint相应目录下执行go install或者直接用
go install golang.org/x/lint/golint
由于之前配置了GOPATH环境变量,所以执行的时候,会自动到%GOPATH%/src/中寻找目标。
如果其他插件也安装失败,可以到golang的github上寻找相应的项目,然后按照以上方法安装其他插件。

编写第一个Hello包

详细参考如何使用Go编程.
回顾之前写的hello.go程序:

package main

import "fmt"

func main() {
	fmt.Printf("Hello, world.\n")
}

我们是直接使用$ go run hello.go来运行它的。、

我们也可以使用$ go install来安装构建这个程序(需要在该包目录下),如果想要在其他地方运行,可以通过$ go install github.com/user/hello来安装构建。其中github.com/user/hello为工作目录下src文件夹下的路径,go 工具会根据 GOPATH 指定的工作空间,在 github.com/user/hello 包内查找源码。

安装完,我们可以看到工作目录中创建了一个bin目录(如果没有才会自动创建)
,bin目录下有hello的可执行文件。
而之前,我们将工作目录下的bin文件夹配置为系统环境变量,所以我们可以直接使用hello指令来运行它

$ hello
Hello, world.

编写自己的第一个库

同样的创建库目录,路径自己选择,以下为参考:
$ mkdir $GOPATH/src/github.com/user/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)
}

编译该包:
$ go build github.com/user/stringutil
如果想生成相应的库文件,则需要使用
$ go install github.com/user/stringutil
执行完之后,可以看到工作空间多出了pkg的目录,该目录下有linux_amd64/ (根据操作系统架构而不同),最底层是刚刚的库文件:stringutil.a。

修改hello.go程序,使其引用刚刚创建的库,并且输出反转的字符串:

package main

import (
	"fmt"

	"github.com/user/stringutil"
)

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

同样的安装,并且测试输出:
得到如下输出:

$ hello
Hello, Go!

go test测试

可以通过创建一个名字以 _test.go 结尾的,包含名为 TestXXX 且签名为 func (t *testing.T) 函数的文件来编写测试。
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)
		}
	}
}

这个测试就是定义一个二元组,二元组的第一个元素是输入字符串,第二个是期望得到的反向字符串,然后对二元组的第一个元素执行Reverse操作(之前定义的函数),看是否能够与期望字符串一致,如果不一致就报错,以此来检测Reverse的功能。
执行$ go test github.com/user/stringutil可以看到以下信息:

ok github.com/user/stringutil 0.165s
或者直接运行VScode插件的命令如图:
在这里插入图片描述然后就会得到类似的输出:
在这里插入图片描述
以上两个包文件上传到Github:传送门
至此完成了第一个包的编写以及测试。

安装Go-tour

Go-tour是学习Go语言编程的指南,可以过在线访问网站http://tour.go-zh.org
也可以下载安装到本地,以离线的形式访问。
按照官方的教程,在命令行执行: go get -u github.com/Go-zh/tour tour
但是由于网络原因,可能不能够安装成功,所以需要第三方的源进行安装:

使用Mercurial下载

对于Ubuntu,使用指令$ sudo apt-get install mercurial下载该工具,然后在命令行输入hg指令确保安装成功。

%GOPATH%/src/目录下执行指令:
$ hg clone https://bitbucket.org/mikespook/go-tour-zh(类似git clone)

然后进入相应的目录如
$ cd $GOPATH/src/bitbucket.org/mikespook/go-tour-zh/gotour

执行
$ go install,

也可以使用在任意路径使用$ go install bitbucket.org/mikespook/go-tour-zh/gotour

安装构建完成之后,会在bin文件夹生成gotour文件,直接运行:gotour
或者打开浏览器访问http://127.0.0.1:3999
就能够进入离线版的go-tour中文版了。

还有一种不那么麻烦的方法,省去了clone和install的步骤:
直接使用go get bitbucket.org/mikespook/go-tour-zh/gotour就能够在bin目录生成相同的二进制文件。
如果中途出现错误,类似packge缺失信息:

package golang.org/x/net/websocket: unrecognized import path “golang.org/x/net/websocket” (https fetch: Get https://golang.org/x/net/websocket?go-get=1: dial tcp 216.239.37.1:443: i/o timeout)

说明有某个工具没有安装,可以到github上寻找相应的库克隆到本地的%GOPATH%/src/golang.org/x/目录下,然后安装相应的工具。如确实websocket的包,则先将net包clone本地,然后进入相应的目录,执行go install

至此完成Go的基本配置!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值