Golang 快速开始

1. 安装

官网: https://go.dev
下载对应版本后安装
go version 验证

安装 VSCode 插件 Go
若插件不生效, 考虑从官网重新安装
开启后可能需要等待一段时间代码提示才会生效

2. 创建项目

1
2
3
4
mkdir <项目名>
cd <项目名>
# 初始化模块
go mod init github.com/<账号名>/<模块名>
  • 每个模块之间相对独立, 使用 github 唯一路径标识方便被其他人调用
  • 模块创建完之后会创建 go.mod 文件, 用于记录依赖项

3. HELLO WORLD

1
2
3
4
5
6
7
8
9
10
11
// 包名可以任意
// main 是特殊包名, 代表入口包, 允许定义 func main()
package main

import (
"fmt"
)

func main() {
fmt.Println("HELLO WORLD")
}

4. 编译运行

编译当前目录下的所有 .go 文件后运行

1
go run .

5. 常见用法

1. 变量定义

1
2
3
4
5
a := 1 // 仅可在函数内使用
var a = 1 // 皆可使用 (常见于函数外)

var a int // 无初值需显式指定类型
fmt.Printf("%T", a) // 打印类型

2. 与或非

1
2
3
4
// 和 C 语言保持一致
a && b
a || b
!a

3. 判断语句

1
2
3
4
5
6
7
if a > 10 {
// do something
} else if a > 5 {
// do something
} else {
// do something
}

4. 循环语句

1
2
3
4
5
6
7
8
9
10
// 用法一: 类似传统 for 循环
for i := 1; i < 5; i++ {
// do something
}
// 用法二: 类似传统 while 循环
i := 1
for i < 5 {
// do something
i++
}

5. 函数

1
2
3
4
5
6
7
8
// 常规函数
func sum(a int, b int) int {
return a + b
}
// 返回多个值 (类似 Python 用法)
func swap(a int, b int) (int, int) {
return b, a
}

6. 数据结构

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
// A.1 定长数组 (类似 C 语言中数组)
a := [5]int{} // 所有元素都是 0(默认值)
a := [5]int{1, 2, 3} // 其余自动为 0
// A.2 变长数组 Slice [常用] (类似 Python list)
s := []int{} // 创建空 Slice
s = append(s, 1) // 添加元素

// B.1 Map
m := map[string]int{
"a": 1,
"b": 2,
}
// B.2 Gin 写法
// 等价 map[string]interface{} (值可以是任意类型)
m := gin.H{
"name": "Alice",
"age": 30,
}

7. 其他语法

  1. panic: 遇到严重错误, 直接抛出错误终止程序
1
panic(err)
  1. defer: 函数退出前一定会执行的代码
1
defer db.Close()
  1. 详细打印复杂类型
1
fmt.Printf("%#v\n", user)

参考
a. BV1HW4y1n7BF