switch 语句中的 case 代码块会默认带上 break,但可以使用 fallthrough 来强制执行下一个 case 代码块。
package mainimport ("fmt"
)func main() {isSpace := func(char byte) bool {switch char {case ' ': // 空格符会直接 break,返回 false // 和其他语言不一样//fallthrough // 返回 truecase '\t':return true}return false}fmt.Println(isSpace('\t')) // truefmt.Println(isSpace(' ')) // false
}
当 char 为 ' ' 时,匹配第一个 case。因为没有 fallthrough 语句,程序不会继续执行下一个 case,直接跳出 switch 语句。由于没有显式的 return 语句,所以默认返回 false。
fmt.Println(isSpace('\t')):由于 '\t' 符合第二个 case,函数返回 true,因此打印 true。
fmt.Println(isSpace(' ')):由于 ' ' 符合第一个 case,但没有 fallthrough,因此函数返回 false,打印 false。
package mainimport ("fmt"
)func main() {isSpace := func(char byte) bool {switch char {case ' ':fallthroughcase '\t':return true}return false}fmt.Println(isSpace('\t')) // truefmt.Println(isSpace(' ')) // true
}
当 char 为 ' ' 时,fallthrough 会继续执行下一个 case 的语句,从而返回 true。
最后给大家推荐一个LinuxC/C++高级架构系统教程的学习资源与课程,可以帮助你有方向、更细致地学习C/C++后端开发,具体内容请见 https://xxetb.xetslk.com/s/1o04uB