快速 Golang 语法教程(一)基本内容

快速过一遍 Golang 教程,方便查阅。

起步

1
2
3
4
5
6
# 设置好 GOPATH
export GOPATH=/home/user/go
# 初始化项目
go mod init example/user/pkg
# 安装包
go get github.com/user/pkg

语法

  1. 文件结构和包
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
// 标记包名称
package main

// 载入包
import "github.com/gin-gonic/gin"

// 载入多个包
import (
"github.com/gin-gonic/gin"
"fmt"
"os"
"math/rand" // 单独载入内容
str "strings" // 给包起别名
)

// 定义主函数
func main() {
// 函数体
}
  1. 函数定义
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
// func [函数名]([参数列表 [参数名 类型,...]]) [返回值类型] {[函数体]}
func functionName(arg1 int, arg2 string) string {
return arg2
}

// 统一定义
func functionName(a, b, c int) int {
return a + b + c
}

//  多参数返回
func functionName(a, b, c int) (int, int) {
return a + b, c
}

// 命名返回
func functionName(d, e int) (x, y int) {
x = d + e
y = d - e

return
}
  1. 变量定义
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
// 文件作用域
var inFile bool

// 多参数定义
var a, b int = 1, 2

func main() {
// 函数内
var inFunc int

// 多参数定义
var c, d string = "abc", "def"

// 简洁定义 类型可以不同
e, f := 1, true
}
  1. 基本类型
  • bool
  • string
  • int
    • int8
    • int16
    • int32
    • int64
  • uint
    • uint8
    • uint16
    • uint32
    • uint64
  • byte == uint8
  • rune == uint32 == (unicode)
  • (float)
    • float32
    • float64
  • (complex)
    • complex64
    • complex128

零值(初始值)

  • 数值型 0
  • 布尔型 false
  • 字符串型 “”
  1. 变量类型操作
1
2
3
4
5
6
7
8
9
10
11
12
// 形式 T(v)
var i int = 42
var f float64 = float64(i)
var u uint = uint(f)
i := 42
f := float64(i)
u := uint(f)

// 类型推导
i := 42 // int
f := 3.142 // float64
g := 0.867 + 0.5i // complex128
  1. 常量(不可改变)

常量可以是字符、字符串、布尔值或数值。

1
2
3
4
5
6
7
8
9
10
const ConstantsName = "test"

// 多常量定义 和常量操作
const (
// 将 1 左移 100 位来创建一个非常大的数字
// 即这个数的二进制是 1 后面跟着 100 个 0
Big = 1 << 100
// 再往右移 99 位,即 Small = 1 << 1,或者说 Small = 2
Small = Big >> 99
)