欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 新闻 > 焦点 > 五、Go语言快速入门值条件控制

五、Go语言快速入门值条件控制

2025/1/3 11:02:12 来源:https://blog.csdn.net/qq_52122458/article/details/143372577  浏览:    关键词:五、Go语言快速入门值条件控制

📅 2024年4月28日

📦 使用版本为1.21.5

条件判断和循环判断

If/switch条件判断

⭐️ 和其他语言一样拥有if else if elseswitch语句

1️⃣ if else if else
func main() {score := 90var ans stringif score >= 0 && score < 60 {ans = "F"} else if score < 70 {ans = "D"} else if score < 80 {ans = "C"} else if score < 90 {ans = "B"} else if score < 100 {ans = "A"} else if score == 100 {ans = "S"} else {ans = "nil"}fmt.Println(ans)
}

2️⃣ if语句可以包含一些简单的语句

func main() {if x := 3 + 1; x > 3 {fmt.Print(x)}
}
3️⃣ Switch

⭐️ 有一个default,当前面条件都不满足就执行

func main() {test := 'a'switch test {case 'a':fmt.Println("a")case 'b':fmt.Println("b")case 'c':fmt.Println("c")default: //默认情况fmt.Println("default")}
}

4️⃣ 在switch中也可以写一些简单的语句

func main() {switch test := 'a'; { //等于 switch test :=a; truecase test == 'a':fmt.Println("a")case test == 'b':fmt.Println("b")case test == 'c':fmt.Println("c")default:fmt.Println("default")}
}

5️⃣ 也可以什么都不写

func main() {、test := 'a'switch  { //等于 switch  truecase test == 'a':fmt.Println("a")case test == 'b':fmt.Println("b")case test == 'c':fmt.Println("c")default:fmt.Println("default")}
}

6️⃣ 使用fallthrough关键字,如果当前分支执行完毕,则继续执行相邻的下一个分支,是直接执行语句,而不是还需要判断

func main() {test := 'a'switch { //等于 switch test :=a; truecase test == 'a':fmt.Println("a")fallthroughcase test == 'b':fmt.Println("b")case test == 'c':fmt.Println("c")default: fmt.Println("default")}
}//输出
a
b

7️⃣ 它还可以包含多个表达式

package mainimport ("fmt"
)func main() {letter := "i"switch letter {case "a", "e", "i", "o", "u": // 一个选项多个表达式fmt.Println("vowel")default:fmt.Println("not a vowel")}
}
lable和goto

⭐️ 标签语句,给一个代码块打上标签,可以是gotobreakcontinue的目标

func main() {A:println('A') //两个代码块,B:println('B')
}

⭐️ 使用goto将控制权传递给在同一函数中对应标签语句,但是在它使用的很少跳来跳去很麻烦,性能消耗也是一个问题

func main() {a := 1if a == 1 {goto A} else {fmt.Println("b")}
A:fmt.Println("a")
}
For循环

⭐️ 在Go中,仅有一种循环语句:for,Go抛弃了while语句,for语句可以被当作while来使用

1️⃣ 语法

func main() {for i := 0; i < 10; i++ {println(i) //输出0-9的数字}
}

2️⃣ 它可以同时声明多个变量,但是不能有多个循环后操作

func main() {for j, i := 0, 0; i < 10 || j > 1; i++ {println(i, j)}
}

3️⃣ 当成while

func main() {for i := 1; i < 100; {println(i)}
}//或者
func main() {i := 1;for i < 100{println(i)}
}

4️⃣ 其他的breakcontinue,就不用多说了

📝 实验:九九乘法表

func main() {//九九乘法表for i := 1; i <= 9; i++ {for j := 1; j <= 9; j++ {if i <= j {fmt.Printf("%d * %d = %2d  ", i, j, i*j)}}fmt.Println()}
}
⭐️ for range

1️⃣ 它有点类似于Pythonfor循环

//语法
for index, value := range iterable {}

2️⃣ 代码实列

func main() {str := "Hello World"for index, value := range str {fmt.Println(index, value) //打印下标和下标的值}
}

💡 它对于不同的数据结构,它的实现可能都不同

⚠️注意点:

  • 作用于切片是返回元素的下标和元素值
  • 作用于string,由于string底层使用UniCode编码存储字符,字符肯占用1-4个字节,所以下标可能不连续
  • 作用于map则返回每个元素的keyvalue
  • 作用于channel,会返回channel中所有元素,如果channel没有元素了for-range则会被阻塞,如果channel本身就是nil,则会直接阻塞

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com