LY 258
安装Go及其VS Code拓展
安装Go
首先下载面对当前系统的Go安装包,我使用的是x86-64架构的CPU、Windows系统,所以下载的是.msi文件。
官网下载:https://golang.org/dl/
谷歌镜像:https://golang.google.cn/dl/
Go中文网下载:https://studygolang.com/dl
下载完成后双击安装。
安装完成。
可以使用菜鸟教程提供的以下测试代码进行测试,如果发现无法运行,可能是Go新版本的依赖关系系统所致,可以参考“搭建工作区”部分。
package main
import "fmt"
func main() {
fmt.Println("Hello, World!")
}
工作盘:\工作路径>go run 文件名.go
Hello, World!
安装完毕后,安装包会自行将Go目录下的bin文件夹添加到系统变量中,使用其它系统的用户还需要配置环境变量。
你也可以手动配置环境变量,操作如下:
1、打开环境变量配置页,可以从系统设置->搜索进入。
2、添加GO_HOME系统变量,指向Go目录。
3、向Path环境变量中添加一项,指向Go/bin目录。
此处%GO_HOME%宏指代了上一步配置的GO_HOME目录。
安装VS Code
VS Code可以从微软官网下载。
官网下载:https://code.visualstudio.com/
在左侧拓展菜单搜索go语言。
安装Go官方拓展(开发者:谷歌Go语言团队)。
该拓展不需要进一步设置即可使用。
安装Git并部署版本库
首先我们需要下载Git,如果有需要,可以下载如TortoiseGit、Github Desktop等GUI界面。
Git官网下载:https://git-scm.com/
TortoiseGit下载:https://tortoisegit.org/download/
Github Desktop下载:https://desktop.github.com/
安装完成后,我们打开Github或者Gitee等在线Git托管网站,新建仓库。
由于此时我们已经准备好了部分代码(见下),所以我们希望直接将当前代码提交到版本库,而不是新建一个带README的空版本库,所以我们不勾选初始化选项。
可以看到Github提供了许多方式进行初始化,对于已存在线下代码的我们,需要选择第三种,不过这是之后再进行的操作了。
搭建工作区
Go语言工作区
首先我们需要在一个文件夹内新建一个.go文件,比如main.go。
使用VS Code打开该文件夹,Go拓展将会自动启动。首次启动时可能会提醒安装Go-Outline插件和GoPls插件等插件,点击安装即可。
如果安装时发生网络错误,可以通过GOPROXY修改下载时的镜像,比如在控制台中输入下列代码以重定向至国内镜像:
go env -w GOPROXY=https://goproxy.cn
go clean --modcache
之后重新安装即可。
如果发现无法调试,可以检查下列插件的安装情况:
go.exe install -v github.com/ramya-rao-a/go-outline@latest
go.exe install -v golang.org/x/tools/gopls@latest
go.exe install -v github.com/go-delve/delve/cmd/dlv@latest
go.exe install -v golang.org/x/tools/cmd/goimports@latest
在新版本中的Go语言中,工作区需要使用go modules来控制依赖库,否则可能无法运行,在工作区输入以下代码:
go mod init [文件夹名]
这行代码将在当前目录下新建模组管理文件,可以修复由依赖问题导致的无法运行。
或者用以下代码来告知Go自行决定是否启用模组管理:
go env -w GO111MODULE=auto
Git配置
在工作区文件夹下打开命令行(cmd、PowerShell……都可以)。
输入以下代码:
git init .
git add .
git commit -m "Initialization Commit"
之后我们需要将远端分支添加到本地版本库。
git remote add [远端仓库名] [git仓库链接]
git push --set-upstream [远端仓库名] [远端分支名]
然后我们就可以操作远端分支了。
开发Menu程序
我们希望使用一种数据类型或者是约束,来方便用户添加命令,所以我们需要定义一个函数类型,并使用集合来存储所有的命令以供检索或是调用。代码如下:
package main
import "fmt"
type Command func() //定义函数委托类型
func main() {
var commandMap map[string]Command //定义命令表
commandMap = make(map[string]Command)
commandMap["hello"] = hello
commandMap["dev_info"] = dev_info
for {
var command string
fmt.Print(">>>") //命令提示符
fmt.Scan(&command)
if command == "exit" { //退出Menu
break
}
if command == "help" { //打开帮助,显示所有命令
var commandIndex int = 0
for cmd := range commandMap { //遍历命令表
commandIndex++
fmt.Println("CMD_", commandIndex, ":", cmd)
}
continue
}
commandFunc, ok := commandMap[command] //检索命令表
if !ok {
continue
} else {
commandFunc() //执行命令
}
}
}
func hello() { //自定义命令1
fmt.Println("Hello world!\n")
}
func dev_info() { //自定义命令2
fmt.Println("Developed By Lighty The Light <3\n")
}
运行结果如下:
程序会打印>>>提示符,通知用户输入命令。随后输入的命令会先经过内置函数检查,如果在属于内置函数(见下表),则会在执行内置函数后转入下一行的命令输入阶段。
help(显示所有已定义的命令)
exit(退出Menu)
提交到Git版本库
完成当前功能的开发后,我们需要使用以下代码将变更提交到版本库。
git add .(如果添加了新文件)
git commit -m "[提交消息]"
之后,如果有需要我们可以使用以下代码将变更上传到在线版本库进行托管。
git push remote origin
LY 258