1 if 条件判断
整个语句没有标点符号
- 只要出现
if,那么{必须与之在同一行 - 只要出现
else,那么}必须与之在同一行
因此为了确保不翻车,保持所有括号与关键字在同一行即可
if 表达式1 { 分支1 } else if 表达式2 { 分支2 } else { 分支3 }
讯享网
另外,在条件判断表达式之前还能做一个变量赋值语句,比如 if score := 65; score >= 90 {
2 switch case 多条件判断
条件冒号
讯享网case N: default: func switchDemo1() {
finger := 3 switch finger {
case 1: fmt.Println("大拇指") case 2: fmt.Println("食指") case 3: fmt.Println("中指") case 4: fmt.Println("无名指") case 5: fmt.Println("小拇指") default: fmt.Println("无效的输入!") } }
3 for循环
- for 语句
;条件;语句{ - for
;条件;语句{ - for 条件
{
3.1 基本
- 左括号必须与关键字同一行
for 初始语句; 条件表达式; 结束语句 { 循环体语句 } func forDemo() { for i := 0; i < 10; i++ { fmt.Println(i) } }
- 初始语句可以被忽略,但是初始语句后的分号必须要写,此时分号后面的内容才被判定为条件
讯享网for ; 条件表达式; 结束语句 { 循环体语句 } func forDemo2() { i := 0 for ; i < 10; i++ { fmt.Println(i) } }
- 初始语句和结束语句可以同时省略,两者同时省略时则没有分号,只剩一个条件
for 条件表达式 { 循环体语句 } func forDemo3() { i := 0 for i < 10 { fmt.Println(i) i++ } }
3.2 无限循环
可以通过break、goto、return、panic语句强制退出循环
讯享网for { 循环体语句 }
3.3 break打断循环
3.4 continue继续循环
3.5 for range 遍历
使用for range遍历数组、切片、字符串、map 及通道(channel)
- 数组、切片、字符串返回索引和值
- map返回键和值
- 通道(channel)只返回通道内的值
遍历二维数组a:for x, y := range a
// 遍历数组 func main() { a := [...]int{1, 3, 5, 7, 8} for x, y := range a { fmt.Printf("%v,%v \n", x, y) } }
3.6 实现99乘法表
讯享网func main(){ for i := 1; i < 10; i++ { for j := 1; j < 10; j++ { if i >= j { fmt.Printf("%v*%v=%v\t ", j, i, i*j) } } fmt.Println() } }
\t 用于对齐
不加\t的效果:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OGdzkscc-11)(https://f0hdj04rkg.feishu.cn/space/api/box/stream/download/asynccode/?code=ZjI4NWY3MjdkZmZjNjFiZGUwNDM1N2Q5NmVmN2I0NjRfYTZzZ1U5bUhrTFJ1cWJlTHM3bDRiejhzQTJTT2R3aTFfVG9rZW46Ym94Y25Rb08xRXEwZ0lsVVRGemJHNVA2eGZlXzE2NTI3OTA0MTg6MTY1Mjc5NDAxOF9WNA)]
加\t的效果:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZwhtAvZc-12)(https://f0hdj04rkg.feishu.cn/space/api/box/stream/download/asynccode/?code=YjRmNzA1MTkwZTA3ODAzZTZiZDNkYTk1YWI5NGQ1YzNfNnk4QXFXOUsxc1lvT0dtRklKMHF3dnRXaUJCaU1HQlJfVG9rZW46Ym94Y25BUFhtVE9qeW55WVR0aXNXYkVzdTZnXzE2NTI3OTA0MTg6MTY1Mjc5NDAxOF9WNA)]
4 goto定点跳转
通过标签进行代码间的无条件跳转
比如:要求一旦j==2就跳出整个循环
4.1 常规实现
func main() { var breakFlag bool for i := 0; i < 10; i++ { for j := 0; j < 10; j++ { if j == 2 { // 设置退出标签 breakFlag = true break } fmt.Printf("%v-%v\n", i, j) } // 外层for循环判断 if breakFlag { break } } }
4.2 goto实现
讯享网func main() { // var breakFlag bool for i := 0; i < 10; i++ { for j := 0; j < 10; j++ { if j == 2 { goto breakTag } fmt.Printf("%v-%v\n", i, j) } } // 跳出外层for breakTag: fmt.Println("结束for循环") }

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/68876.html