Go
基础语法
Hello World
package main
import "fmt"
func main() {
fmt.Println("Hello, World!")
}
变量声明
var name string = "Alice" // 显式类型
var age = 25 // 类型推断
height := 175 // 短声明(函数内)
常量
const Pi = 3.14
const (
StatusOK = 200
StatusNotFound = 404
)
数据类型
| 类型 |
示例 |
说明 |
int |
var n int = 42 |
整数(32/64位) |
float64 |
pi := 3.14 |
双精度浮点数 |
bool |
isDone := true |
布尔值 |
string |
s := "Go" |
UTF-8 字符串 |
rune |
c := 'A' |
Unicode 码点 |
复合类型
// 数组
var arr [3]int = [3]int{1, 2, 3}
// 切片(动态数组)
slice := []int{1, 2, 3}
slice = append(slice, 4)
// 映射
m := map[string]int{"a": 1, "b": 2}
流程控制
条件语句
if score >= 90 {
fmt.Println("A")
} else if score >= 80 {
fmt.Println("B")
} else {
fmt.Println("C")
}
循环
// 传统 for 循环
for i := 0; i < 5; i++ {
fmt.Println(i)
}
// while 替代
n := 0
for n < 5 {
fmt.Println(n)
n++
}
// 无限循环
for {
break // 需手动退出
}
Switch
switch os := runtime.GOOS; os {
case "darwin":
fmt.Println("macOS")
case "linux":
fmt.Println("Linux")
default:
fmt.Println("Other")
}
函数
基本函数
func add(a int, b int) int {
return a + b
}
// 多返回值
func swap(x, y string) (string, string) {
return y, x
}
匿名函数
func() {
fmt.Println("Anonymous function")
}()
闭包
func adder() func(int) int {
sum := 0
return func(x int) int {
sum += x
return sum
}
}
结构体与方法
定义结构体
type Person struct {
Name string
Age int
}
p := Person{"Alice", 25}
方法
func (p Person) SayHello() {
fmt.Printf("Hello, I'm %s\n", p.Name)
}
接口
定义接口
type Shape interface {
Area() float64
}
实现接口
type Circle struct {
Radius float64
}
func (c Circle) Area() float64 {
return math.Pi * c.Radius * c.Radius
}
并发编程
Goroutine
func say(s string) {
for i := 0; i < 3; i++ {
fmt.Println(s)
}
}
go say("Hello") // 启动新协程
Channel
ch := make(chan int)
go func() {
ch <- 42 // 发送数据
}()
val := <-ch // 接收数据
错误处理
标准错误处理
f, err := os.Open("file.txt")
if err != nil {
log.Fatal(err)
}
defer f.Close()
自定义错误
type MyError struct {
Msg string
}
func (e *MyError) Error() string {
return e.Msg
}
标准库常用包
| 包名 |
用途 |
fmt |
格式化 I/O |
net/http |
HTTP 客户端/服务器 |
os |
操作系统功能 |
encoding/json |
JSON 处理 |
sync |
并发同步工具 |
项目结构
myproject/
├── go.mod # 模块定义
├── main.go # 入口文件
├── internal/ # 内部包
│ └── utils/ # 工具函数
├── pkg/ # 可复用库
└── cmd/ # 命令行程序