Go语言概述

Golang创自2007年,由谷歌于2009年正式开源的一门计算机高级语言,其由C系语言改进而来,自开源以来便得到许多为人津津乐道的赞赏:天然支持高并发、跨平台、简单易用、性能高,其生态社区也逐渐完善,其设计哲学非常简单,直接丢弃了C++三大面向对象特性——类封装、继承和多态,泛型(1.18,2022年)是后面才引入的。

当然,Go在国内市场仍然是一款高度业务化的语言,多用于设计微服务和高并发,可玩性(可折腾性)比不上python和C/C++,这也是其设计哲学的体现,从底层而言其不提供手动内存管理而使用自动gc,不适用于内核开发;从应用层而言其更多专注后端服务,对Gui支持较差,就业市场也比较狭窄,尤其AI时代下使用其他语言去造轮子成本更低,使得Go并不那么需要被迫切普及。

但尝试新东西总会有新的启发,golang仍然是其中较为值得学习的语言之一。

windows 11安装和VsCode编译

go的安装比较简单,在网址下载msi安装,或下载压缩包(如go1.27.1.windows-amd64.zip,注意要x86-64架构的),解压并且设置环境变量即可,以下下载地址均可:

环境变量最好设置两个路径,其中GOROOT是编译器和标准库的依赖路径(我们下载完解压的目录),另一个GOPATH是第三方包的存放路径(默认用户目录),均添加到PATH环境变量即可。

验证:

1
2
3
4
5
6
7
8
go version
go version go1.27.1 windows/amd64

go env GOROOT
D:\Documents\Desktop\go

go env GOPATH
C:\Users\heygears\go

由于只是小试牛刀,此处使用vscode编译就够了,打开安装Go插件和Code Runner插件,安装后者实在是不想折腾了,好几次运行vscodee launch build都会失败:

1
2
3
4
5
6
7
8
9
10
$ go build
# internal/bytealg
go_asm.h:1: expected identifier, found "%"
asm: assembly of ..\go\src\internal\bytealg\compare_amd64.s failed
# internal/runtime/gc/scan
go_asm.h:1: expected identifier, found "%"
asm: assembly of ..\go\src\internal\runtime\gc\scan\expand_amd64.s failed
# internal/runtime/syscall/windows
go_asm.h:1: expected identifier, found "%"
asm: assembly of ..\go\src\internal\runtime\syscall\windows\asm_windows_amd64.s failed

而命令行是成功的,也没有看到比较有效方法,用这个插件调用反而成功,还可以一键运行,比较方便。

在设置-code-runner中勾选编译前保存文件,方便编译: code-runner

更改go代理

提升go module的下载速度。

1
go env -w GOPROXY=https://proxy.golang.com.cn/,direct
其他代理:

提供者 地址
官方全球代理 https://proxy.golang.com.cn
官方 https://goproxy.io,direct
七牛云 https://goproxy.cn
阿里云 https://mirrors.aliyun.com/goproxy/
GoCenter https://gocenter.io
百度 https://goproxy.bj.bcebos.com/

Hello World

至此,重启计算机重新载入环境变量就可以尝试第一个实例了,新建文件夹:

1
mkdir alpha_go
初始化一个go环境项目:
1
go mod init alpha_go
可以看到自动生成了一个go.mod文件,手动创建main.go文件,打印Hello World:
1
2
3
4
5
6
package main // 声明 main 包,表明当前是一个可执行程序
import "fmt" // 导入内置 fmt

func main() { // main函数,是程序执行的入口
fmt.Println("Hello World!") // 在终端打印 Hello World!
}
点击运行即可。