分类 Golang 下的文章

本文采用知识共享 署名-相同方式共享 4.0 国际 许可协议进行许可。
访问 https://creativecommons.org/licenses/by-sa/4.0/ 查看该许可协议。

优先级从上往下从大到小, 但是fallthrough(继续向下走case)
switch执行速度要比if快, 如果拿switch当if用, 执行速度一样

// Switch
switch a {
        case 1:
        case 2:
        case 3,4: // 可以让case选择多个值
        break // 打破Switch 
}
switch { // Switch当If else使用
        case a > 1:
        case a == 0:
                fallthrough // 必须在代码块的结尾, 继续往下走case而不跳出
}
switch a > 1 { // 还能放Bool
        case true:
        case false:
}

// 甚至还能放Type=.=好玩
// 以下是从Golang官方Github找到的一个经典案例

// Unpack 4 bytes into uint32 to repack into base 85 5-byte.
var v uint32
switch len(src) {
default:
 v |= uint32(src[3])
 fallthrough
case 3:
 v |= uint32(src[2]) << 8
 fallthrough
case 2:
 v |= uint32(src[1]) << 16
 fallthrough
case 1:
 v |= uint32(src[0]) << 24
}

本文采用知识共享 署名-相同方式共享 4.0 国际 许可协议进行许可。
访问 https://creativecommons.org/licenses/by-sa/4.0/ 查看该许可协议。

内存四区

  • 代码区(相对低地址, 只读)
  • 数据区(全局变量存储在初始化和未初始化区)
    • 初始化数据区()
    • 未初始化数据区
    • 常量区(const, iota, 字面常量)
  • 堆区
  • 栈区(相对高地址, 存放加载代码和各种局部变量)
Title - Artist
0:00