服务计算作业一——安装go语言开发环境

服务计算作业一——安装go语言开发环境

18342138 郑卓民

相关博客链接:

本次作业建立在centos7虚拟机的基础上,关于centos虚拟机的安装及相关问题,可见于以下链接:

经验分享——centos虚拟机安装

系统硬件与操作系统

选择virtualbox下的虚拟机centos7进行实验。

安装VSCode编辑器

centos 7 使用yum安装vscode

  1. 创建repo文件 vscode.repo,输入以下内容:
[code]
name=Visual Studio Code
baseurl=https://packages.microsoft.com/yumrepos/vscode
enabled=1
gpgcheck=1
gpgkey=https://packages.microsoft.com/keys/microsoft.asc
  1. 复制文件 vscode.repo 到目录 /etc/yum.repos.d
  2. 安装vscode
yum makecache
yum install code

在这里插入图片描述
在这里插入图片描述

安装golang

直接使用命令:sudo yum install golang会出现没有可用软件包的错误,如下:

在这里插入图片描述

这代表在linux系统yum源中已经没有对应的安装包了,这时我们需要安装EPEL(Extra Packages for Enterprise Linxu,企业版Linux额外包): yum install -y epel-release

在这里插入图片描述

然后使用:sudo yum install golang即可

在这里插入图片描述

安装到哪个目录?rpm -ql golang|more

在这里插入图片描述

测试安装:go version

在这里插入图片描述

设置环境变量

  1. 创建工作空间 mkdir $HOME/gowork
  2. 配置环境变量
# 通过修改.bashrc文件
vim ~/.bashrc
# 在最后面加上下面两句:
export GOPATH=/home/daniel/go # 这是我的设置
export PATH=$PATH:$GOPATH/bin

在这里插入图片描述

  1. 更新配置 source ~/.bashrc
  2. 检查配置 go env

在这里插入图片描述

创建hello world!

创建源代码目录:mkdir $GOPATH/src/github.com/github-user/hello -p 其中github-user对应你的github账户名称

使用 vs code 创建 hello.go:

package main

import "fmt"

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

终端运行

go run hello.go

在这里插入图片描述

解决centos7的root账户下无法通过code命令启动vscode

centos7的root账户下无法通过code命令启动vscode:

[root@localhost ~]# code
You are trying to start vscode as a super user which is not recommended. If you really want to, you must specify an alternate user data directory using the --user-data-dir argument.

在这里插入图片描述

通过命令行启动code,并打开文件夹:

vim ~/.bashrc

添加以下别名:

alias code='sudo code --user-data-dir="/!:1"'

更新配置:

source ~/.bashrc

安装git客户端

sudo yum install git

在这里插入图片描述

安装go的一些工具

此部分安装tools文件库。

  1. 下载源代码到本地(两种方法)

方法一:

# 创建文件夹
mkdir $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

方法二:
直接去https://github.com/golang/tools.git 克隆一份然后放到$GOPATH/src/golang.org/x/tools目录下。

  1. 安装工具包
go install golang.org/x/tools/go/buildutil
  1. 安装运行hello world
go install github.com/github-user/hello
hello

在这里插入图片描述

安装vscode的go相关扩展

按提示点击安装之后,只有一个问题,最后提示有一个安装包安装失败Installing github.com/ramya-rao-a/go-outline FAILED。然后按照指导页面使用go get -d github.com/golang/tools将源代码下载到本地后安装还是不行。

在这里插入图片描述

解决:手动安装

go get -u github.com/ramya-rao-a/go-outline
go install github.com/ramya-rao-a/go-outline

安装与运行go tour

使用示例代码会出现错误,如下:

go get github.com/Go-zh/tour/gotour
gotour
# github.com/Go-zh/tour/gotour has moved to golang.org/x/tour

查看 github.com/Go-zh/tour/gotour/main.go 文件,main输出完该语句就直接退出了。(github上的仓库不再维护了)

在这里插入图片描述

解决如下:

此处需要安装的东西有golang/net, yuin/goldmark, gotour

net:

参考网站https://github.com/golang/net 上的做法

The easiest way to install is to run go get -u golang.org/x/net. You can also manually git clone the repository to $GOPATH/src/golang.org/x/net.

goldmark:

参考网站https://github.com/yuin/goldmark 上的做法

go get github.com/yuin/goldmark
gotour:

在码云gotour仓库中下载资源(https://gitee.com/kxmile/gotour)

然后把解压出来的文件中,将src/bitbucket.org复制到$GOPATH/src目录下

在这里插入图片描述

然后在$GOPATH/src/bitbucket.org/mikespook/go-tour-zh/gotour下执行go install后运行gotour即可。

在这里插入图片描述

在这里插入图片描述

可以看到生成的可执行文件放在项目目录的bin文件夹下面:

在这里插入图片描述

我的第一个包与测试

第一个库

编写一个库,并让 hello 程序来使用它。

同样,第一步还是选择包路径(我们将使用 github.com/user/stringutil) 并创建包目录:

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

确认 stringutil 包构建完毕后,修改原来的 hello.go 文件(它位于 $GOPATH/src/github.com/user/hello)去使用它:

package main

import (
	"fmt"

	"github.com/user/stringutil"
)

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

无论是安装包还是二进制文件,go 工具都会安装它所依赖的任何东西。 因此当我们通过

go install github.com/user/hello

来安装 hello 程序时,stringutil 包也会被自动安装。

运行此程序的新版本,你应该能看到一条新的,反向的信息:

在这里插入图片描述

测试

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 运行该测试:

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值