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