Golang quick start


配置 Go 开发环境

简介

官网:https://go.dev/

package repository:https://pkg.go.dev/

编辑器:Visual Studio Code

配置开发环境

在官网下载 latest stable 版本的 go 进行安装后,安装成功后执行以下脚本进行验证:

# 安装成功后输出版本
go version

VsCode 安装 Go 官方提供的 plugin,需要注意的是该插件需要下载一些 tools 才可以正常使用,但是在国内没法直接下载,用代理好像也不太行,不过国内有相关的镜像:

更多信息可以参考 Go 中文社区:

# 查看 go 相关的所有环境变量
go env

# 查看 env command 的说明
go help env
# 查看环境变量的具体含义
go help environment

# 下面是要使用到的环境变量           
# GO111MODULE 用于控制 go 的 command 是使用 module-aware 模式还是 GOPAT 模式
# GOPROXY, Go module 使用的代理, 是一个 URL, 具体可以参考官方文档

# windows 系统设置 go 的环境变量
go env -w GO111MODULE=on # 使用 module-aware 模式来运行 go 的命令
go env -w GOPROXY=https://goproxy.cn,direct # 直接从 version control repositories 下载,而不是使用 module proxy

GOProxy:https://go.dev/ref/mod#environment-variables

安装 tools

VsCode 中 Go 官方的 plugin 需要的相关 module 可以参考插件的 GitHub 仓库源码:

go install -v golang.org/x/tools/gopls@latest

go install -v github.com/fatih/gomodifytags@latest

go install -v github.com/haya14busa/goplay/cmd/goplay@latest

go install -v github.com/josharian/impl@latest

go install -v mvdan.cc/gofumpt@latest

go install -v golang.org/x/tools/cmd/goimports@latest

go install -v github.com/cweill/gotests/gotests@latest

go install -v golang.org/x/lint/golint@latest

go install -v honnef.co/go/tools/cmd/staticcheck@latest

go install -v github.com/golangci/golangci-lint/cmd/golangci-lint@latest

go install -v github.com/mgechev/revive@latest

go install -v github.com/go-delve/delve/cmd/dlv@latest

go install -v github.com/golang/vscode-go/vscgo@latest

以 windows 系统为例,默认情况下这些 module 会被下载到 C:\User\${用户名}\go\bin 目录下。

Hello Go World

开发环境准备完毕后,在特定目录下打开 vscode,使用命令:

# 初始化一个 module
go mode init io.naivekyo/hello

执行完上述脚本后,会在当前目录下生成一个 go.mod 文件,内部声明了当前模块的信息,然后新建 hello.go 文件:

package main

import "fmt"

func main() {
	fmt.Println("hello Golang world!")
}

上述 code 的含义:

  • 声明了一个叫做 main 的 package(package 是对 functions 分组的一种方式,它由同目录下的所有文件组成);
  • 引入了名为 fmt 的公共 package,内部包含一些 functions,主要用于格式化文本内容,也可以把信息输出到控制台,fmt 是 go 内置的 package 之一;
  • 实现了一个叫做 main 的 function,通常按照约定当我们执行 package 的时候,默认就会去找包中的 main 函数来执行,比如上面的例子,在 execute main package 的时候默认执行 main function。

运行 package:

# 在当前目录下执行以下命令,会自动执行 main function
go run .

# 输出
hello Golang world!

扩展

Go Module

简单列一些常用的命令:

# 进入特定目录中
# 初始化一个 go module
# 具体的模块命名规则可以参考官方文档
$> go mod init example.com/greetings
go: creating new go.mod: module example.com/greetings

# 当前目录下创建新的子目录
# 进入子目录后, 执行 go mod 命令初始化新的模块
$> go mod init example.com/hello
go: creating new go.mod: module example.com/hello

如果特定目录已经发布到公共或私有仓库,go tools 可以根据相关路径下载目标模块,如果需要在没有发布模块的情况下在其他模块引入特定模块的代码,则需要修改 go.mod,比如这样:

# main 方法所在 moduel 的 go.mod 文件需要定位引入的本地模块的位置, 可以使用 replace 指令
go mod edit -replace example.com/greetings=../greetings

# 同步依赖关系
go mod tidy

Author: NaiveKyo
Reprint policy: All articles in this blog are used except for special statements CC BY 4.0 reprint polocy. If reproduced, please indicate source NaiveKyo !
  TOC