这次的作业是go语言开发环境的安装及应用
安装步骤
一、安装VS code编辑器
我更倾向于在CentOs中使用vim,在Windows中使用VS code,所以我跳过了这个步骤。如果需要了解如何在CentOs中安装VS code,请关注我后续的博客
二、安装golang
三步走:安装,检查安装位置,测试
1、安装:sudo yum install golang
。下图是已经安装过的
2、检查安装位置:rpm -ql golang |more
3、测试:go version
三、配置环境变量
1、创建工作空间:mkdir $HOME/gowork
2、配置环境变量:
vim ~/.profile
或者vim $HOME/.profile
然后添加两行:
然后执行:source $HOME/.profile
3、检查配置:go env
go 语言编程
一、hello world
先重启一下,然后就可以创建源代码目录
mkdir $GOPATH/src/github.com/Luisao7120/hello -p
-p 的作用是创建每一级目录,很方便。创建完成后,进入这个目录
cd $GOPATH/src/github.com/Luisao7120/hello
创建源代码文件
vim hello.go
保存退出,在终端运行
go run hello.go
二、利用 git 将代码上传到 github
这次作业要求我们,仔细阅读官方文档,并按文档写第一个包,做第一次测试,且请其写在 git 仓库 Readme.md 中。这里就需要一个github仓库便于TA查看作业了。所以我整理了一个将代码上传到github的小教程
1、安装git客户端
sudo yum install git
2、创建git仓库
首先进入目录
cd $GOPATH/src/github.com/本地仓库名/
然后初始化
git init
这时候输入ls -a(-a是显示隐藏文件/文件夹),就会发现一个隐藏文件夹.git,这个是用来记录库历史的
3、添加git文件
git add .
这时候会报错,后面解释
4、添加修改注释(必需)
git commit -m "这里是你注释的内容"
这时候会报错,后面解释
5、连接本地仓库和github上的远程仓库
git remote add origin https://github.com/用户名/github仓库名
6、push本地仓库的内容(需要输入github账号和密码)
git push -u origin master
这时候你会发现报错:src refspec master does not match any
,原因是本地仓库还是空的,我们在创建完本地仓库后,并没有添加任何东西。之前提过,第3、4步是失败的,原因也是本地仓库为空,第3、4步失败自然也就无法push。所以请在本地仓库中添加文件,再重复3、4、6步的内容。全部完成后你就可以打开github查看本地上传的文件了
三、第一个包
“第一个包”是用hello.go调用reverse.go,代码如下:
//1、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
2、hello.go
package main
import (
"fmt"
"github.com/Luisao7120/stringutil"
)
func main() {
fmt.Printf(stringutil.Reverse("!oG ,olleH"))
}
//用 go install 命令来安装:
$ go install github.com/Luisao7120/hello
//运行
$ hello
四、第一次测试
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
输出是:
ok github.com/Luisao7120/stringutil 0.165s