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

Tip
🔗 官网下载页:https://go.dev/dl/ 🔗 阿里云镜像(国内快):https://mirrors.aliyun.com/golang/
- 最新稳定版:go1.26.6(2026-08-11 发布,
go.dev/VERSION确认) - 本机架构:x86_64(amd64)
部署
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/gojiuzhao@Ubuntu 下载$ sudo tar -C /usr/local -zxf go${GO_VERSION}.linux-amd64.tar.gzjiuzhao@Ubuntu 下载$ /usr/local/go/bin/go versiongo 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 ~/.bashrcjiuzhao@Ubuntu ~$ go versiongo version go1.26.6 linux/amd64
# 一次性查看多个关键环境变量的当前值(方便你快速确认配置是否正确)jiuzhao@Ubuntu ~$ go env GOPATH GOROOT GOPROXY GOOS GOARCH/home/jiuzhao/go/usr/local/gohttps://goproxy.cn,directlinuxamd64
4)创建工作区目录jiuzhao@Ubuntu ~$ mkdir -p ~/go/{bin,pkg,src}jiuzhao@Ubuntu ~$ tree ~/go/home/jiuzhao/go├── bin # 存放编译好的可执行文件(go install 后的程序放这里)├── pkg # 存放编译好的缓存文件(.a 文件)└── src # 存放你自己的源代码Hello World 验证
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$ lltotal 12drwxrwxr-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.modmodule 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.gopackage 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.goHello, 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$ ./helloHello, Go 1.26!jiuzhao@Ubuntu hello$ ls -lh hello-rwxrwxr-x 1 jiuzhao jiuzhao 2.3M Aug 15 00:09 helloNote
观察特点:
- 单文件、无依赖:只有一个二进制可执行文件,不需要额外添加动态库,也不需要解释器
- 是机器码,不是文本:用
cat/less打开是乱码,因为里面是 CPU 可直接执行的本地指令 - 体积偏大(约 2.3 MB):这是 Go 的核心特性——静态编译
- Go 在编译时把运行时(垃圾回收 GC、协程调度 GMP、网络轮询器)直接打包进可执行文件里
- 而不是依赖系统的共享库,因此 Go 程序的基础体量通常在 2~10 MB 这个量级
文章分享
如果这篇文章对你有帮助,欢迎分享给更多人!
相关文章智能推荐
1
ELFK对接Kafka & KRaft模式集群
ES集群ElasticStack 与 Kafka 全链路对接(Filebeat→Kafka→Logstash→ES),Go 程序生成 100w 条 Nginx 日志并通过 ELFK 架构实时分析处理(grok+geoip+useragent),深入理解 KRaft 模式的 Kafka 集群部署(无需 Zookeeper)
2
K8s故障排查 & 控制器与Service实战
Kubernetes故障排查三板斧describe/logs/exec与command&args,容器三种状态与pause基础架构容器,env环境变量部署WordPress,Deployment副本控制与滚动更新回滚,Service四类型ClusterIP/NodePort/LoadBalancer/ExternalName,kube-proxy+iptables底层实现,名称空间,CoreDNS服务发现与跨ns解析,deploy+svc部署WordPress及跨名称空间连库实战
3
K8s开篇 & kubeadm集群部署实战
KubernetesK8s核心概念与架构详解,基于kubeadm从零部署高可用集群,Flannel网络配置,Pod基础使用与YAML声明式管理
4
Prometheus 告警 && etcd 集群实战
Prometheus监控Alertmanager 告警路由/模板/静默/抑制 + 钉钉插件,etcd 3.7 TLS 高可用集群部署/备份恢复/Prometheus 监控,复用既有 kpyun CA 体系
5
Prometheus存储实战 && HTTPS认证 && 黑盒监控
Prometheus监控VictoriaMetrics单机部署+remote_write远端存储,Prometheus启用HTTPS+Basic Auth认证,node-exporter黑白名单,标签管理(relabel/metric_relabel),blackbox-exporter HTTP/ICMP/TCP黑盒探测,Grafana存储迁移到MySQL















