Linux(Deepin):GoLang 安装、配置、简单使用与包测试

Deepin 简介

Deepin 操作系统是由武汉深之度科技有限公司基于 Debian 开发的Linux发行版。
因为这是本人关于在 Deepin 虚拟机上工作、学习的第一篇博客,所以想简要介绍一下 Deepin 的使用情况。

优势

  1. 个人选择 Deepin 是因为其安装简单,而且没有Ubuntu那么多坑,可以在10分钟内很轻松地进行 Deepin 虚拟机的创建。
  2. Deepin 的界面十分友好,有时尚模式和高效模式,但无论哪种模式都可以满足我个人审美的体验,相比于身边同学使用的比较多的 Ubuntu ,这款操作系统以它的小巧和精致打动了我。

这是 Deepin 的桌面

遇到问题的解决

Deepin采用的是Debian的一个稳定分支进行拓展而来,因此遇到诸如软件包安装此类的问题,可以直接参考Debian系统下的解决方案。

版本的选择

目前Deepin已经更新到了23预览版以及20.7的稳定版,15.4版已确定停止更新,建议选择15.4的旧版,其稳定性是20版完全无法媲美的,而且对于虚拟机使用的系统来说,保持更新不如求稳。
官网已停止提供15版的虚拟光盘下载,此处提供一个百度网盘下载链接:

下载链接:https://pan.baidu.com/s/17zxA1dCBlxP3qN6RUn7utQ?pwd=sg4y
提取码: sg4y

# VSCode 安装 在官网下载 VSCode 程序包: 下载地址: [https://go.microsoft.com/fwlink/?LinkID=760868](https://go.microsoft.com/fwlink/?LinkID=760868) 也可以在 /usr/local文件夹下打开终端,使用: `sudo wget https://go.microsoft.com/fwlink/?LinkID=760868` 直接获取代码压缩包,然后解压即可。 打开代码文件夹,在 bin 文件夹下即可找到可执行文件 code,双击就可以开始使用 VSCode 了。
# GoLang 安装配置 使用:`sudo yum install golang` 即可安装 GoLang > yum 全称 Yellow dog Updater Modified,yum 的主要用途是对 rpm 包进行管理,包括安装、卸载、升级等。

可以参考:https://www.cnblogs.com/ct20150811/p/10696635.html 来进行 yum 的安装、配置。
安装完成,在终端输入:go version

运行结果

GoLang 环境变量配置

Go程序包默认安装到了 /usr/local/go,并且已经自动配置了 GOROOT。
我们现在需要自己创建一个文件夹作为 Go 的工作空间。
为方便起见我直接在桌面创建了 GoEnv 文件夹(鼠标右键 - 新建文件夹),由于不是在终端创建的,所以可以直接使用图形化的界面进行文件的创建和修改,这个在后面用 VSCode 打开工作空间,才能够直接在 VSCode 中创建文件。

现在可以来配置工作空间的环境变量了:
Deepin 系统的环境变量的配置文件路径为 /etc/profile
可以直接运行:sudo vim /etc/profile
然后在文件的最后面添加:

# GOROOT: GO的安装路径
export GOROOT=/usr/local/go
# GOPATH: GO的工作路径
export GOPATH=
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin

然后在终端运行:

在这里插入图片描述
source指令可以让配置文件立即生效,但是运行 source /etc/profile 之后命令行变为了奇怪的颜色,然后关闭终端后,配置便失效了,于是我尝试把网上两种更新源的方法组合起来,颜色恢复正常,同时配置也持久化了!
使用 go env 检验 GOPATH 配置情况:

GOPATH="/home/tommy/Desktop/GoEnv"

GoLang 的简单使用

首先在工作空间创建我们的项目文件夹:

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

然后我们用 VSCode 打开工作空间所在的文件夹(也就是之前创建在桌面的 GoEnv),在 VSCode 中找到我们创建项目文件夹,创建 hello.go 文件,编辑、保存:

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

在终端使用:go run hello.go

在这里插入图片描述

Go 必要工具与插件的安装

git 客户端的安装

使用:sudo yum install git

VSCode 插件安装

在 VSCode 中创建了一个 .go 文件之后,会立即弹窗让我安装相关插件,但是点击安装,又全部都安装失败了。
只是因为无法连接 golang 的官网获取工具包。
于是我们只能从 Github 上下载工具包后进行安装:

# 创建文件夹
mkdir $GOPATH/src/golang.org/x/ -p
# 下载源码
go get -d github.com/golang/tools
# copy 
cp $GOPATH/src/github.com/golang/tools $GOPATH/src/golang.org/x/ -rf

下载源码的过程莫名失败,这时不必慌张,可以直接用 git clone 将源码克隆到我们需要的文件夹,也即 $GOPATH/src/golang.org/x/tools
具体过程即为:创建 tools 文件夹,然后在文件夹内打开终端,运行:

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

然后我们关闭 VSCode 后,再次进入,重新进入 .go 文件,VSCode便会再次弹窗让我们安装所有的插件,这时我们直接开始安装,稍等片刻(10 mins)即可安装完成。


现在我们可以安装我们自己编写的程序了:

go install github.com/github-user/hello

注意我们可以在系统的任何地方运行这个指令,因为 go 会自动在 GOROOT 和 GOPATH 指定的工作区间查找,我们只需保证包的名字是正确的即可:

go install
此命令会构建 hello 命令,产生一个可执行的二进制文件,接着它会将该二进制文件作为 hello 安装到工作空间的 bin 目录中,可以直接使用 $GOPATH/bin/hello 执行该命令。
如果已经把 $GOPATH/bin 添加到环境变量中了,就可以像图中那样,直接运行 hello 命令(感觉离写游戏脚本又近了一步)。

安装、运行 go tour

Go 语言学习之旅(go tour)是 Github 上的一个软件库,我们可以直接 git clone 下来,然后用 go install 进行下载,这样我们就可以离线运行这款软件。

git clone https://github.com/Go-zh/tour.git

然后执行 go install

go install github.com/Go-zh/tour.git

安装后执行结果如下:

在这里插入图片描述

我的第一个(功能齐全的)包与测试

参考:如何使用 GO 编程

为 hello 包添加自定义的库

之前我们创建与编写的 hello 包只是一个非常基本的示例,现在我们要创建一个自己的库供 hello.go 文件使用。

  1. 在 $GOPATH/src/github.com/github-user/文件夹下创建库所在的文件夹 /stringutil在这里插入图片描述
  2. 然后在 /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)
}
  1. 使用:go build github.com/github-user/stringutil 编译该包,build 不会产生任何输出。
  2. stringutil 包构建完成后,将其添加到 hello 的 import 中:

在这里插入图片描述

  1. 再次运行:go install github.com/github-user/hello,运行生成的 hello 命令,可以看到 stringutil.Reverse 函数成功将字符串反向,输出为 “Hello, Go!”

在这里插入图片描述

测试

Go 自带的轻量级测试框架会自动运行每一个名字以 _test.go 结尾的,且包含名为 TestXXX 且签名为 func (t *testing.T) 函数的文件来进行测试;若该函数调用了像 t.Error 或 t.Fail 这样表示失败的函数,此测试即表示失败。

下面直接说明测试流程:

  1. 创建文件 $GOPATH/src/github.com/github-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)
		}
	}
}
  1. 在 /stringutil 文件夹下运行:go test 进行测试:

在这里插入图片描述

小结

  1. 这是第一次真正在 CSDN 上写博客,感觉编辑工具非常人性化,看着自己打的 Markdown 语法在右侧呈现出了自己想要的效果还是很舒服的。
  2. 这次实验的过程中使用 Deepin 并不是很愉快,虽然表面上说 Deepin 可以完成大部分的需要,但是在使用 yum 安装 git 的时候出现 “事务检测错误“ ,但是网上只有 CentOs 的解决方案,而 Deepin 不支持直接使用 rpm 安装、卸载文件,导致无法使用教程,而且问题的报错也很是奇怪,但是最后使用 sudo apt-get install git 成功安装了 git,但没使用 yum 安装成功总还是有些担心。所以大家还是尽量使用 CentOS 或者 Ubuntu 等大规模的操作系统为好,这样可以在社区找到更多问题的解决方案。本人也考虑近期更换使用的虚拟机操作系统了。
  3. 初识 Go 语言,首先是为之 go install 命令的功能所震撼,创建一条二进制指令,在系统的任何地方都能够执行,感觉很高大上。关于语言的更多语法和特性应该会在之后的博客中总结。
  4. 在命令行使用 go run go install 等指令的时候,一定要记清楚指令自动的搜索范围是 $GOPATH/src 而不是 $GOPATH 因为 src 文件夹才是存储源码的文件夹,pkg 文件夹用来存储包对象,而 bin 文件夹下为可执行文件。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值