if、for
package main
import "fmt"
func main() {
numbers1 := []int{1, 2, 3, 4, 5, 6}
// numbers 是一个切片,迭代变量就有两个
// 右边表示当前的元素值,左边表示该元素值在切片中的索引值
// 只有一个迭代变量时,代表该元素值在切片中的索引值
for i := range numbers1 {
if i == 3 {
numbers1[i] |= i
}
}
fmt.Println(numbers1)
fmt.Println()
// numbers2 是一个数组
numbers2 := [...]int{1, 2, 3, 4, 5, 6}
maxIndex2 := len(numbers2) - 1
// range 只会在 for 语句开始时被求值一次
// 其结果会被复制
for i, e := range numbers2 {
if i < maxIndex2 {
numbers2[i+1] += e
}
}
fmt.Println(numbers2)
fmt.Println()
// 改成切片,为引用类型
numbers3 := []int{1, 2, 3, 4, 5, 6}
maxIndex3 := len(numbers2) - 1
for i, e := range numbers3 {
if i < maxIndex3 {
numbers3[i+1] += e
}
}
fmt.Println(numbers3)
}
switch
-
case 表达式的结果类型必须与 switch 表达式的结果类型相等,否则无法通过编译。
-
switch 在 case 的选择上具有唯一性。switch 语句不允许 case 中的子表达式结果值存在相等的情况,该约束只针对结果值为常量的表达式。