相关截图:


主要内容:

它不会匹配失败后自动向下尝试,但是可以使用 fallthrough 使其这样做。没
有 fallthrough:
switch i {
case 0: // 空的 case 体
case 1:
f() // 当 i == 0 时,f 不会被调用!
}
而这样:
switch i {
case 0: fallthrough
case 1:
f() // 当 i == 0 时,f 会被调用!
}用 default 可以指定当其他所有分支都不匹配的时候的行为。
switch i {
case 0:
case 1:
f()
default:
g() // 当 i 不等于 0 或 1 时调用
}
分支可以使用逗号分隔的列表。
func shouldEscape(c byte) bool {
switch c {
case ' ', '?', '&', '=', '#', '+': ← , as "or"
return true
}
return false
}
这里有一个使用两个 switch 对字节数组进行比较的例子:
// 比较返回两个字节数组字典数序先后的整数。
// 如果 a == b 返回 0,如果 a < b 返回 -1,而如果 a > b 返回 +1
func Compare(a, b []byte) int {
for i := 0; i < len(a) && i < len(b); i++ {
switch {
case a[i] > b[i]:
return 1
case a[i] < b[i]:
return -1
}
18 Chapter 2: 基础
}
// 长度不同,则不相等
switch {
case len(a) < len(b):
return -1
case len(a) > len(b):
return 1 }
return 0 // 字符串相等
}
内建函数
预定义了少数函数,这意味着无需引用任何包就可以使用它们。表格 2.3 列出
了所有的内建函数。e
Table 2.3. Go 中的预定义函数
close new panic complex
delete make recover real
len append print imag
cap copy println
delete 用于在 map 中删除实例。
len 和 cap 可用于不同的类型, len 用于返回字符串、slice 和数组的长度。参
new 用于各种类型的内存分配。参阅 “用 new 分配内存” 的第 59 页。
make 用于内建类型(map、slice 和 channel)的内存分配。