Go语言第一章(入门)

0 阅读6分钟

Go(又称 Golang)是Google在 2007 年推出、2009 年正式开源的静态编译型编程语言,由罗伯特・格瑞史莫(Rob Pike)、肯・汤普森(Ken Thompson,C 语言、Unix 之父)、罗伯特・格雷厄姆三人主导开发。

我们带入神话故事来理解Go语言:

  1. Unix —— 鸿钧老祖(定系统天道规则)
  2. C 语言 —— 造化玉碟(鸿钧核心基础功法,万物底层根基)
  3. BSD / System V / Linux —— 三清三大圣人(鸿钧三大弟子,各自演化道统)
  4. C++ —— 太上老君(在基础功法上炼化灵宝,功能最全,复杂大型基建专用)
  5. Go —— 鸿钧后人新创简化功法(Ken Thompson 是 Unix/C 元老,简化 C,适配云洪荒)
  6. Java —— 西方接引道人(套一层虚拟机结界,跨天地通用,但厚重笨重)
  7. Python —— 散修懒人功法(上手简单,封装底层,不用苦修基础内功)
  8. Windows —— 域外魔神,自成一方小世界,早年排斥鸿钧道统

image.png

Go 语言特点

Go 的设计哲学是「少即是多」—— 砍掉冗余特性,专注工程效率与可维护性。以下是它最核心的几大特点:

  1. 原生并发:基于 goroutine 与 channel 实现 CSP 并发模型,协程初始栈仅数 KB,远比传统 OS 线程轻量,由运行时统一调度,天然适合高并发服务
  2. 自动内存管理:内置 GC 垃圾回收器,无需像 C/C++ 那样手动申请与释放内存,在开发效率与运行安全之间取得平衡
  3. 静态编译:编译产物为单一可执行文件,无外部运行时依赖,拷贝到目标机器即可运行,部署极其简单
  4. 跨平台编译:内置交叉编译能力,在 macOS 上一条 go build 命令即可产出 Linux、Windows 等平台的二进制文件
  5. 语法简洁:仅 25 个关键字,用组合替代继承,拒绝过度设计,代码易读易写,学习曲线平缓
  6. 编译速度极快:大型项目完整编译通常在秒级完成,修改代码后几乎即编即跑,开发体验流畅
  7. 标准库强大net/httpencoding/jsoncontext 等核心库久经生产验证,网络、序列化、并发控制等常见需求开箱即用
  8. 工具链一体化go mod 管理依赖、go test 运行测试、go fmt 统一格式,从编码到发布全流程有官方工具支撑

如何安装 Go 语言

1. 下载安装包

Go 语言的安装包可以在 Go 语言官网 下载。

image.png

选择你所对应的操作系统,点击下载安装包。

2. 安装 Go 语言

一路下一步,直到安装完成。

image.png

3. 验证安装

在终端输入 go version 命令,如果显示 Go 语言的版本信息,则说明安装成功。(目前主包用的是1.26.4版本)

image.png

4. 编辑器下载

推荐使用 VS Code 编辑器,因为Go语言官方推荐使用VS Code作为开发工具。下载完成一路下一步,直到安装完成。

5. 配置go语言插件

在VS Code中安装Go语言插件,安装完成后,VS Code会自动配置Go语言环境。

image.png

为什么要出这个教程以及为什么要学习 Go 语言

为什么要写这个教程

Go 的中文资料不少,但质量参差不齐——有的太浅,有的直接翻译官方文档,缺少一条清晰的学习路径。写这个系列,是希望给零基础或从其他语言转过来的同学一份系统化、能跟着动手的入门指南,少走弯路。

为什么要学 Go

  1. 就业市场需求大:字节、腾讯、美团、百度等大厂的后端、基础架构、中间件岗位大量招聘 Go 开发;云原生、微服务方向几乎绕不开它
  2. 薪资有竞争力:具备 Go + 云原生(K8s、Docker)技能的工程师,在市场上通常比纯 CRUD 后端更有议价空间
  3. 入门门槛相对友好:语法简洁、关键字少,有 Python、Java 或前端 JS 基础的同学,通常一两周就能写出可运行的服务
  4. 前端转全栈的务实选择:纯前端岗位竞争加剧,掌握 Go 后可以独立完成后端 API、中间层逻辑,向全栈或平台工程方向发展
  5. 云原生时代的「官方语言」:Docker、Kubernetes、Prometheus、Etcd 等核心基础设施均用 Go 编写,学 Go 有助于真正理解这些工具的底层原理
  6. 区块链 / Web3 的主流技术栈:以太坊 Go 客户端 Geth、Hyperledger Fabric 等均基于 Go,相关岗位普遍将其列为硬性要求
  7. 适用场景广:微服务 API、命令行工具、爬虫、消息队列、网关、DevOps 脚本——从业务到基建都能覆盖
  8. 性能与开发效率的平衡:编译快、部署简单、并发模型清晰,在需要高并发但又不想陷入 C++ 复杂度的场景里,Go 是性价比很高的选择

如果你属于以下任一情况,都很适合从这里开始:

  • 想转行后端或全栈,不知道从哪下手
  • 做运维 / 云计算,想读懂 K8s 生态的代码
  • 在校或转行,希望掌握一门「好找工作」的实用语言
  • 已经会一点编程,想系统补全 Go 的知识体系

Hello World

我们可以新建一个hello.go文件,然后输入以下代码:

package main
import "fmt"
func main() {
	fmt.Println("Hello, World!")
}

然后我们打开终端,输入go run hello.go命令,运行程序。

go run hello.go

输出> Hello, World!

package main

package main
  1. package main = 告诉 Go 编译器,这是程序的入口包(可执行程序)。
  2. Go 官方规定,程序入口必须叫 main,名字是固定的,不能修改。

例如我改成 aaa 会报错:

package aaa

import "fmt"

func main() {
	fmt.Println("Hello, World!")
}
package command-line-arguments is not a main package # 错误提示

import "fmt"

导入(Import)Go 标准库中的 fmt 包,让当前文件可以使用它提供的功能。

  1. fmt:Go 官方提供的格式化输入输出包。
  2. Println():fmt 包中的一个函数,用来打印内容并换行。

func main()

  1. func main():定义一个名为 main 的函数,这是 Go 程序的入口函数。
  2. {}:main 函数的代码块,必须有。
  3. fmt.Println("Hello, World!"):调用 fmt 包中的 Println 函数,打印 "Hello, World!" 字符串。

作业

  1. 修改 hello.go 文件,将 "Hello, World!" 改成 "Hello, Go!"。
  2. 运行程序,观察输出结果。