go 语言介绍
go 是 Google 开发的一种静态强类型、编译型、并发型,并具有垃圾回收功能的编程语言。具有简单、可靠、高效的特点。
代码示例:
1
2
3
4
5
6
7
package main
import "fmt"
func main() {
fmt.Println("Hello, 世界")
}
安装
linux 安装
-
下载 go for linux 并解压到 /usr/local/go
1 2 3
wget https://golang.google.cn/dl/go1.18.linux-amd64.tar.gz sudo rm -rf /usr/local/go sudo tar -C /usr/local -xzf go1.18.linux-amd64.tar.gz
-
将地址 /usr/local/go/bin 添加到 PATH 环境变量
可在 ~/.zshrc 等文件末尾添加上环境变量然后
source ~/.zshrc
;1
export PATH=$PATH:/usr/local/go/bin
-
[可选] 设置 go 内置环境变量 GOPATH
默认 go 内置环境变量 GOPATH 为
~/go
;
windows 安装
双击安装,一路 next 即可;
接着打开 Windows 环境变量设置页 –> 用户环境变量
- 安装后有一个环境变量 GOPATH 默认值是
%USERPROFILE%\go
,修改为你的工作目录,比如D:\Projects\GoWork
; - 在 PATH 中添加一个
%GOPATH%\bin
,这样可以直接在命令行执行通过go get -u xxx.com
得到的模块 bin 文件; - 如果 powershell 正在使用,Win10 修改环境变量后完全退出并重新打开 powershell,确保环境变量生效;
安装后的操作
1
2
3
4
5
# [建议] 设置 gomod 为自动
go env -w GO111MODULE=auto
# [可选] 使用七牛云 go 代理
go env -w GOPROXY=https://goproxy.cn,direct
初步使用
使用 vscode go 插件
-
在 vscode 中按如下风格新建一个 hello.go 文件;
1 2 3 4 5 6 7 8 9
package main import "fmt" func main() { fmt.Println("Hello, World1!") fmt.Println("Hello, World2!") fmt.Println("Hello, World3!") }
-
接着 vscode 会提示安装 go 插件;
-
插件安装安装完成后右下角会提示安装必要 go 模块,点击安装全部即可(请先设置好 go 代理);
如果确认已经设置好了 go 代理,但是安装不成功,就重启 vscode 一次;
模块源码会安装到
$GOPATH/pkg/mod
,工具会安装到$GOPATH/bin
; -
在 vscode 工作区的 hello 目录下打开控制台,执行初始化模块
1 2 3 4 5 6 7 8
# 初始化模块,生成 go.mod 文件 go mod init example.com/hello # 整理依赖,会自动调整 go.mod,下载依赖到 $GOPATH/pkg/mod,以及生成 go.sum go mod tidy # 会将依赖项源码拷贝到工程 vendor 目录,没有该目录会自动生成 go mod vendor
-
最终目录下文件如下,打断点后按 F5 可进行调试;
简单的模块调用
调用 github 上的 go 模块
-
创建新文件 hello.go
1 2
mkdir -p ~/vscode/golang/test1 touch ~/vscode/golang/test1/hello.go
-
编辑 hello.go 文件
模块来自 https://github.com/rsc/quote
1 2 3 4 5 6 7
package main import "fmt" import "rsc.io/quote" func main(){ fmt.Println(quote.Go()) }
-
初始化模块并补充依赖
1 2 3 4 5
# 初始化模块 go mod init example.com/hello # 添加缺少模块以及移除多余模块 go mod tidy
-
文件目录如下:
-
直接执行效果如下:
不直接执行,而是编译为当前系统执行文件使用
go build .
;1
go run .
编写一个被调模块和主模块
编写被调模块
-
创建新文件 greetings.go
1 2
mkdir -p ~/vscode/golang/test2/greetings touch ~/vscode/golang/test2/greetings/greetings.go
-
编辑 greetings.go 文件
1 2 3 4 5 6 7 8 9
package greetings import "fmt" // Hello returns a greeting for the named person. func Hello(name string) string { // Return a greeting that embeds the name in a message. message := fmt.Sprintf("Hi, %v. Welcome!", name) return message }
-
初始化模块
1
go mod init example.com/greetings
-
文件目录如下:
编写主模块
-
创建新文件 hello.go
1 2
mkdir -p ~/vscode/golang/test2/hello touch ~/vscode/golang/test2/hello/hello.go
-
编辑 hello.go 文件,调用 “example.com/greetings” 模块
1 2 3 4 5 6 7 8 9 10 11
package main import ( "fmt" "example.com/greetings" ) func main() { // Get a greeting message and print it. message := greetings.Hello("Gladys") fmt.Println(message) }
-
初始化模块并补充依赖
1 2 3 4 5 6
# 初始化模块 go mod init example.com/hello # 重定向依赖,greetings 在 ../greetings 目录 go mod edit -replace example.com/greetings=../greetings # 添加缺少模块以及移除多余模块 go mod tidy
-
文件目录如下:
-
直接执行效果如下:
不直接执行,而是编译为当前系统执行文件使用
go build .
;1
go run .
初步尝试 beego
安装 beego 和 bee
前提条件:
- go 1.1+
- 开启 GO111MODULE
- 配置好环境变量 GOPATH、PATH(能找到
$GOPATH/bin
);
以下命令会安装 beego、bee 到 $GOPATH 中;
1
go get -u github.com/beego/beego/v2go get -u github.com/beego/bee/v2
快速演示
Linux 平台
1
2
3
4
cd $GOPATH/src
bee new hello
cd hello
bee run
Windows 平台
1
2
3
4
cd $env:GOPATH/src
bee new hello
cd hello
bee run
运行结果
运行过程中出现报错:
1
2
3
4
5
2021/07/21 15:14:54 ERROR ▶ 0003 Failed to build the application: go: github.com/beego/beego/v2@v2.0.1: missing go.sum entry; to add it:
go mod download github.com/beego/beego/v2
2021/07/21 15:15:07 ERROR ▶ 0003 Failed to build the application: ..\..\pkg\mod\github.com\beego\beego\v2@v2.0.1\server\web\staticfile.go:29:2: missing go.sum entry for module providing package github.com/hashicorp/golang-lru (imported by github.com/beego/beego/v2/server/web); to add:
go get github.com/beego/beego/v2/server/web@v2.0.1
按照提示下载模块即可解决:
1
2
go mod download github.com/beego/beego/v2
go get github.com/beego/beego/v2/server/web@v2.0.1
一旦程序开始正常运行,就可以在浏览器中打开 http://localhost:8080/ 进行访问。
使用 GoLand 打开演示工程
GoLand 是 JetBrains 开发的 Go 语言 IDE;
-
安装中文插件;
如果已经打开某工程,可以从 File –> Setting –> plugins 打开插件页面;
在欢迎页面的 “插件/Plugins” 中搜索 “Chinese” 关键字,找到中文语言包插件进行安装,然后重启 IDE;
-
Jetbrains 系列产品重置试用方法——安装重置试用插件
-
点击 Plugins 页面右上角设置图标,选择“管理插件仓库”,手动添加第三方插件仓库地址:
https://plugins.zhile.io
; -
搜索
IDE Eval Reset
插件进行安装,安装完成后 IDE 会多出一个按钮 “菜单栏 –> 帮助/Help –> Eval Reset”;- 按钮 Reload 用来刷新界面上显示信息;
- 按钮 Reset 会重置试用信息并重启 IDE;
- 勾选项 Auto reset before per restart 会每次重启/退出 IDE 会自动重置试用信息;
-
-
打开项目时选择 $GOPATH/src 中的目录,演示工程中创建的是 hello 目录;
-
打开后可以运行和调试工程