Go语言第一章(入门)
Go又称 Golang是Google在 2007 年推出、2009 年正式开源的静态编译型编程语言由罗伯特・格瑞史莫Rob Pike、肯・汤普森Ken ThompsonC 语言、Unix 之父、罗伯特・格雷厄姆三人主导开发。我们带入神话故事来理解Go语言Unix —— 鸿钧老祖定系统天道规则C 语言 —— 造化玉碟鸿钧核心基础功法万物底层根基BSD / System V / Linux —— 三清三大圣人鸿钧三大弟子各自演化道统C —— 太上老君在基础功法上炼化灵宝功能最全复杂大型基建专用Go —— 鸿钧后人新创简化功法Ken Thompson 是 Unix/C 元老简化 C适配云洪荒Java —— 西方接引道人套一层虚拟机结界跨天地通用但厚重笨重Python —— 散修懒人功法上手简单封装底层不用苦修基础内功Windows —— 域外魔神自成一方小世界早年排斥鸿钧道统Go 语言特点Go 的设计哲学是「少即是多」—— 砍掉冗余特性专注工程效率与可维护性。以下是它最核心的几大特点原生并发基于 goroutine 与 channel 实现 CSP 并发模型协程初始栈仅数 KB远比传统 OS 线程轻量由运行时统一调度天然适合高并发服务自动内存管理内置 GC 垃圾回收器无需像 C/C 那样手动申请与释放内存在开发效率与运行安全之间取得平衡静态编译编译产物为单一可执行文件无外部运行时依赖拷贝到目标机器即可运行部署极其简单跨平台编译内置交叉编译能力在 macOS 上一条go build命令即可产出 Linux、Windows 等平台的二进制文件语法简洁仅 25 个关键字用组合替代继承拒绝过度设计代码易读易写学习曲线平缓编译速度极快大型项目完整编译通常在秒级完成修改代码后几乎即编即跑开发体验流畅标准库强大net/http、encoding/json、context等核心库久经生产验证网络、序列化、并发控制等常见需求开箱即用工具链一体化go mod管理依赖、go test运行测试、go fmt统一格式从编码到发布全流程有官方工具支撑如何安装 Go 语言1. 下载安装包Go 语言的安装包可以在 Go 语言官网 下载。选择你所对应的操作系统点击下载安装包。2. 安装 Go 语言一路下一步直到安装完成。3. 验证安装在终端输入go version命令如果显示 Go 语言的版本信息则说明安装成功。(目前主包用的是1.26.4版本)4. 编辑器下载推荐使用 VS Code 编辑器因为Go语言官方推荐使用VS Code作为开发工具。下载完成一路下一步直到安装完成。5. 配置go语言插件在VS Code中安装Go语言插件安装完成后VS Code会自动配置Go语言环境。为什么要出这个教程以及为什么要学习 Go 语言为什么要写这个教程Go 的中文资料不少但质量参差不齐——有的太浅有的直接翻译官方文档缺少一条清晰的学习路径。写这个系列是希望给零基础或从其他语言转过来的同学一份系统化、能跟着动手的入门指南少走弯路。为什么要学 Go就业市场需求大字节、腾讯、美团、百度等大厂的后端、基础架构、中间件岗位大量招聘 Go 开发云原生、微服务方向几乎绕不开它薪资有竞争力具备 Go 云原生K8s、Docker技能的工程师在市场上通常比纯 CRUD 后端更有议价空间入门门槛相对友好语法简洁、关键字少有 Python、Java 或前端 JS 基础的同学通常一两周就能写出可运行的服务前端转全栈的务实选择纯前端岗位竞争加剧掌握 Go 后可以独立完成后端 API、中间层逻辑向全栈或平台工程方向发展云原生时代的「官方语言」Docker、Kubernetes、Prometheus、Etcd 等核心基础设施均用 Go 编写学 Go 有助于真正理解这些工具的底层原理区块链 / Web3 的主流技术栈以太坊 Go 客户端 Geth、Hyperledger Fabric 等均基于 Go相关岗位普遍将其列为硬性要求适用场景广微服务 API、命令行工具、爬虫、消息队列、网关、DevOps 脚本——从业务到基建都能覆盖性能与开发效率的平衡编译快、部署简单、并发模型清晰在需要高并发但又不想陷入 C 复杂度的场景里Go 是性价比很高的选择如果你属于以下任一情况都很适合从这里开始想转行后端或全栈不知道从哪下手做运维 / 云计算想读懂 K8s 生态的代码在校或转行希望掌握一门「好找工作」的实用语言已经会一点编程想系统补全 Go 的知识体系Hello World我们可以新建一个hello.go文件然后输入以下代码packagemainimportfmtfuncmain(){fmt.Println(Hello, World!)}然后我们打开终端输入go run hello.go命令运行程序。go run hello.go输出 Hello, World!package mainpackagemainpackage main 告诉 Go 编译器这是程序的入口包可执行程序。Go 官方规定程序入口必须叫 main名字是固定的不能修改。例如我改成aaa会报错packageaaaimportfmtfuncmain(){fmt.Println(Hello, World!)}package command-line-arguments is not a main package# 错误提示import “fmt”导入ImportGo 标准库中的 fmt 包让当前文件可以使用它提供的功能。fmtGo 官方提供的格式化输入输出包。Println()fmt 包中的一个函数用来打印内容并换行。func main()func main()定义一个名为 main 的函数这是 Go 程序的入口函数。{}main 函数的代码块必须有。fmt.Println(“Hello, World!”)调用 fmt 包中的 Println 函数打印 “Hello, World!” 字符串。作业修改hello.go文件将 “Hello, World!” 改成 “Hello, Go!”。运行程序观察输出结果。