TOC

Golang 基础

工作这么多年之后,学习一门新的语言,对于语法方面的东西应该是只用看看就行了(重点在其生态的学习)。
所以,这只是对 Go 语法做一个简单的梳理。

25 个关键词

break        default      func         interface    select
case         defer        go           map          struct
chan         else         goto         package      switch
const        fallthrough  if           range        type
continue     for          import       return       var
  1. var / const 变量和常量的声明
  2. package / import 导入
  3. func 定义函数和方法
  4. return
  5. defer
  6. go 并行
    channel
    select 通讯类型
  7. interface 接口
  8. type 自定义类型
  9. struct 结构体
  10. if else
    switch case default fallthrough
    for continue break
    goto 流程控制
  11. map
  12. range 用于读取 slice、map、channel 数据

数据类型 Types

  • Boolean types 布尔型 bool
    只有两个值:true / false
  • Numberic types 数值型
    int, int8, int16, int32, int64
    uint, uint8, uint16, uint32, uint64
    float32, float64
    complex64, complex128
  • String types 字符串 string
  • Array types 数组
  • Slice types 切片
  • Struct types 结构体
  • Pointer types 指针
  • Function types 函数
  • Interface types 接口
  • Map types 映射 / 关联数组 / 字典 / 哈希表
  • Channel types

  • 字符类型 byte = uint8, rune = int32

  • 指针 uintptr
  • 数组有 len 和 cap 属性,cap 是数组的容量,len 是数组的长度。这个设计使得 Go 的数组有一定的拓展性,不像 C 那么死。
    如果 append 的数据太大,超出 cap 范围,就会重新分配内存。
  • 数组切片 Slice 是一个引用类型,它指向一个底层数组,所以是共享内存的!在 Python 中切片生成新的数组。
// go/src/runtime/slice.go
type slice struct {
    array unsafe.Pointer
    len   int
    cap   int
}

其他

  1. 变量声明和初始化
  2. 数据类型转换
  3. 输出与字符串格式化
  4. 结构体(struct)和接口(interface
  5. 异常处理机制
  6. 包管理
  7. goroutine
  8. 反射
  9. 标准库