Go
Go(又称 Golang)是 Google 开发的一种开源编程语言,设计目标是让开发者能够高效地构建简单、可靠且高性能的软件。
Go 诞生于 2007 年,由 Robert Griesemer、Rob Pike 和 Ken Thompson 联合设计,2009 年正式开源。设计初衷是解决大规模软件开发痛点:C++ 编译太慢、Java 运行时太臃肿、脚本语言性能不足,希望兼具编译型语言的性能和动态语言的开发效率。
Go 的官方口号是 Simple, Fast, Reliable。
核心特性
| 特性 | 说明 |
|---|---|
| 编译速度 | 大型项目秒级编译 |
| 并发支持 | goroutine + channel 原生支持并发 |
| 简洁性 | 语法精简,关键字仅 25 个,没有类和继承 |
| 内存安全 | 自动垃圾回收(GC) |
| 静态类型 | 编译期类型检查 |
| 跨平台 | 一套代码编译为 Windows、Linux、macOS 等平台可执行文件 |
应用领域
云原生(Docker、Kubernetes、etcd、Prometheus)、微服务与 API 开发(Gin、Echo、Fiber)、CLI 工具(Hugo、fzf、gh、kubectl)、网络编程与分布式系统、区块链(go-ethereum)、AI 基础设施(Ollama)。
目录索引
base 基础语法
| 文件 | 内容 |
|---|---|
| 00-index | 环境配置与基本格式、变量、常量、iota、标准库 |
| 01-environment | 环境安装、GOPATH/GOROOT、开发工具、VSCode 配置 |
| 02-structure | 程序结构与基础语法 |
| 03-variable | 变量类型、整型、浮点、精度丢失、类型转换 |
| 04-string_char | 字符、字符串、常用方法、类型互转 |
| 05-nil | nil 空值 |
| 06-constants | 常量、iota |
| 07-operator | 算数、关系、逻辑、赋值、位运算符 |
| 08-controll | 条件语句、循环、for range、goto |
| 09-func | 函数定义、可变参数、匿名函数、递归、闭包 |
| 10-scope | 变量作用域 |
| 11-array_slice_map | 数组、切片、make、copy、map |
| 12-pointer | 指针、取地址 |
| 13-structor | 结构体、指针、匿名、匿名字段 |
| 14-range | Range 遍历、迭代变量复用 |
| 15-recursion | 递归函数 |
| 16-typecast | 类型转换、strconv |
| 17-object | 面向对象:接口、继承、结构体嵌入、多态 |
| 18-genericity | 泛型、类型参数、约束 |
| 19-error | 错误处理、errors、panic/recover |
| 20-defer | defer、panic、recover |
| 21-concurrent | 并发:goroutine、channel、WaitGroup、Mutex、select |
| 22-netcode | 网络编程:TCP、HTTP |
| 23-fileOperate | 文件操作 os/bufio、读写、追加、权限 |
| 24-io | IO 输入输出、bufio.Scanner、io.Reader/Writer |
| 25-assertion | 类型断言、type switch |
| 26-modules | Go Modules、go.mod/go.sum、GOPROXY |
innerlib 标准库
| 文件 | 内容 |
|---|---|
| json | JSON 序列化与反序列化、结构体标签 |
| regex | 正则表达式 regexp 包 |
| time | time 包、时间格式化、时间戳 |
快速开始
创建 main.go:
package main
import "fmt"
func main() {
fmt.Println("Hello, World!")
}
运行:go run main.go