Go语言开篇

1100 字
6 分钟
Go语言开篇
Go语言开篇

Go语言开篇#

[TOC]


概述#

  • 运维开发第一语言:Docker、Kubernetes、Prometheus、frp 全部用 Go 编写,学 Go = 读懂运维生态源码
  • 单二进制交付:编译完就是一个可执行文件,不依赖外部运行时
  • 天然并发:写监控采集、告警分发这类高并发场景极其顺手
  • 部署极简:go build 一个命令出产物,交叉编译 GOOS=linux GOARCH=amd64 无缝支持

Go官网下载页
Go官网下载页

Tip

🔗 官网下载页:https://go.dev/dl/ 🔗 阿里云镜像(国内快):https://mirrors.aliyun.com/golang/

  • 最新稳定版:go1.26.6(2026-08-11 发布,go.dev/VERSION 确认)
  • 本机架构:x86_64(amd64)

部署#

Terminal window
1)下载与校验
jiuzhao@Ubuntu 下载$ GO_VERSION=1.26.6
# 下载(国内用镜像更快)
jiuzhao@Ubuntu 下载$ curl -fSL -o go${GO_VERSION}.linux-amd64.tar.gz \
https://mirrors.aliyun.com/golang/go${GO_VERSION}.linux-amd64.tar.gz
-s # 静默模式,不显示进度条(还是让它显示进度条吧)
-f # 下载失败(如 404)时不输出乱七八糟的 HTML
-S # 但还是要显示错误原因(常与 -s 配合使用)
-L # 如果下载地址有跳转,自动跟过去(重定向)
# 校验 sha256(与官方一致,防篡改)
jiuzhao@Ubuntu 下载$ sha256sum go${GO_VERSION}.linux-amd64.tar.gz
# 期望值:708effb774be8237570d0add163225abbdfaf4fca28b2611df167beba4feef89
2)系统级安装(推荐,需 sudo)
jiuzhao@Ubuntu 下载$ sudo rm -rf /usr/local/go
jiuzhao@Ubuntu 下载$ sudo tar -C /usr/local -zxf go${GO_VERSION}.linux-amd64.tar.gz
jiuzhao@Ubuntu 下载$ /usr/local/go/bin/go version
go version go1.26.6 linux/amd64
3)环境变量配置
jiuzhao@Ubuntu ~$ vim ~/.bashrc
# Go 环境变量
export GOPATH="$HOME/go" # 工作区目录
export PATH="/usr/local/go/bin:$PATH" # Go 自身命令
export PATH="$PATH:$GOPATH/bin" # 第三方工具(如 golangci-lint)
export GOPROXY="https://goproxy.cn,direct" # 国内代理(解决国内拉不到 google 源的问题)
export GO111MODULE="on" # 启用模块(可选,推荐)
jiuzhao@Ubuntu ~$ source ~/.bashrc
jiuzhao@Ubuntu ~$ go version
go version go1.26.6 linux/amd64
# 一次性查看多个关键环境变量的当前值(方便你快速确认配置是否正确)
jiuzhao@Ubuntu ~$ go env GOPATH GOROOT GOPROXY GOOS GOARCH
/home/jiuzhao/go
/usr/local/go
https://goproxy.cn,direct
linux
amd64
4)创建工作区目录
jiuzhao@Ubuntu ~$ mkdir -p ~/go/{bin,pkg,src}
jiuzhao@Ubuntu ~$ tree ~/go
/home/jiuzhao/go
├── bin # 存放编译好的可执行文件(go install 后的程序放这里)
├── pkg # 存放编译好的缓存文件(.a 文件)
└── src # 存放你自己的源代码

Hello World 验证#

Terminal window
1)创建项目目录
jiuzhao@Ubuntu ~$ mkdir -p ~/go/src/hello && cd ~/go/src/hello
2)初始化模块(第一步!)
jiuzhao@Ubuntu hello$ go mod init hello
# go mod init <模块名> 里的模块名可以随便起(项目名即可)
`就像给项目办了个"身份证",有了它,后续所有 Go 命令都能正常工作`
jiuzhao@Ubuntu hello$ ll
total 12
drwxrwxr-x 2 jiuzhao jiuzhao 4096 Aug 15 00:06 ./
drwxrwxr-x 3 jiuzhao jiuzhao 4096 Aug 15 00:03 ../
-rw-rw-r-- 1 jiuzhao jiuzhao 24 Aug 15 00:06 go.mod # 模块配置文件
jiuzhao@Ubuntu hello$ cat go.mod
module hello // 模块名(就是 go mod init 后面跟的名字)
go 1.26 // 指定使用的 Go 版本
// 如果引入第三方库,会自动添加在这里:
// require github.com/gin-gonic/gin v1.9.0
// require github.com/go-sql-driver/mysql v1.7.0
3)创建 main.go 文件
jiuzhao@Ubuntu hello$ vim main.go
package main // 【包名】必须是 main,才能编译成可执行文件
import "fmt" // 【导入包】导入 fmt 包用于打印
func main() { // 【入口函数】程序从这里开始执行,必须是 main()
fmt.Println("Hello, Go 1.26!") // 【业务逻辑】这里写你的程序代码
}
4)拉取依赖
jiuzhao@Ubuntu hello$ go mod tidy
# 必须写完 main.go --> 要扫描 main.go 里的 import 拉依赖
5)运行/构建
jiuzhao@Ubuntu hello$ go run main.go
Hello, Go 1.26!
# ✅ 直接运行(临时编译 + 立即执行)
jiuzhao@Ubuntu hello$ go build -o hello .
# 编译成二进制
jiuzhao@Ubuntu hello$ tree .
.
├── go.mod # 【模块配置文件】定义当前模块名和Go版本,以及第三方依赖
├── hello # 【编译产物】可执行文件(由 go build 生成,可直接运行)
└── main.go # 【源码入口】程序的唯一入口,包含 main() 函数
6)运行可执行文件
jiuzhao@Ubuntu hello$ ./hello
Hello, Go 1.26!
jiuzhao@Ubuntu hello$ ls -lh hello
-rwxrwxr-x 1 jiuzhao jiuzhao 2.3M Aug 15 00:09 hello
Note

观察特点:

  • 单文件、无依赖:只有一个二进制可执行文件,不需要额外添加动态库,也不需要解释器
  • 是机器码,不是文本:用 cat/less 打开是乱码,因为里面是 CPU 可直接执行的本地指令
  • 体积偏大(约 2.3 MB):这是 Go 的核心特性——静态编译
    • Go 在编译时把运行时(垃圾回收 GC、协程调度 GMP、网络轮询器)直接打包进可执行文件里
    • 而不是依赖系统的共享库,因此 Go 程序的基础体量通常在 2~10 MB 这个量级

文章分享

如果这篇文章对你有帮助,欢迎分享给更多人!

Profile Image of the Author
久棹
不是先学好了再干,而是先干起来再学习,干中学!
分类
站点统计
文章
115
分类
15
标签
272
总字数
306,562
运行时长
0 天
最后活动
0 天前
文章目录