九江做网站公司,深圳网站设计公司费用,网站设置可以访问,中国机械工业网流程控制
Go语言中有以下几种常见的流程控制语句#xff1a; 条件语句#xff08;Conditional Statements#xff09;#xff1a; if语句#xff1a;用于根据条件执行代码块。else语句#xff1a;在if条件不满足时执行的语句块。else if语句#xff1a;用于在多个条件之…流程控制
Go语言中有以下几种常见的流程控制语句 条件语句Conditional Statements if语句用于根据条件执行代码块。else语句在if条件不满足时执行的语句块。else if语句用于在多个条件之间进行判断。 age : 20if age 18 {fmt.Println(成年人)
} else {fmt.Println(未成年人)
}score : 85
if score 90 {fmt.Println(优秀)
} else if score 80 {fmt.Println(良好)
} else {fmt.Println(及格)
}循环语句Loop Statements for循环用于重复执行一段代码块可以指定循环条件、初始语句和后续语句。range循环用于遍历数组、切片、字符串、映射等数据结构中的元素。 // for循环
for i : 1; i 5; i {fmt.Println(i)
}
//for遍历string
str : hello,nihao
fmt.Println(str)
fmt.Println(字符串str长度为:, len(str))
for i : 0; i len(str); i {//fmt.Printf(字节打印:, str[i]) //直接打印是字符的编码fmt.Printf(%c, str[i])
}
// range循环
numbers : []int{1, 2, 3, 4, 5}
for index, value : range numbers {fmt.Printf(索引%d值%d\n, index, value)
}
//range遍历string
for i, v : range str {fmt.Printf(索引位置%d的值为%c\n, i, v)//索引位置0的值为h
}选择语句Selection Statements switch语句根据表达式的值选择执行不同的分支。 num : 2switch num {
case 1:fmt.Println(选择了1)
case 2:fmt.Println(选择了2)
default:fmt.Println(未知选择)
}fruit : apple
switch fruit {
case apple, pear:fmt.Println(选择了苹果或梨子)
case banana:fmt.Println(选择了香蕉)
default:fmt.Println(未知选择)
}跳转语句Jump Statements break语句用于跳出当前循环或switch语句。continue语句用于跳过当前循环的剩余代码并开始下一次迭代。goto语句无条件地转移到指定标签的语句。 for i : 1; i 5; i {if i 3 {break // 当i等于3时跳出循环}fmt.Println(i) // 1 2}for i : 1; i 5; i {if i 3 {continue // 当i等于3时跳过本次循环继续下一次循环}fmt.Println(i) //1 2 4 5}i : 0
Loop:for {iif i 3 {goto Loop // 跳转到Loop标签处继续执行循环} else if i 5 {break Loop // 在第5次循环时跳出循环}fmt.Println(i)//1 2 4}除了上述常见的流程控制语句Go语言还提供了一些其他的关键字和语句来处理程序的流程控制如 fallthrough在switch语句中用于贯穿到下一个分支的代码块。 默认情况下当一个分支的条件满足时switch语句会执行该分支并终止不会继续执行其他分支。但是如果在某个分支使用了fallthrough关键字那么即使该分支的条件满足程序也会继续执行下一个分支无论下一个分支的条件是否满足。 num : 2switch num {
case 1:fmt.Println(数字是1)
case 2:fmt.Println(数字是2)fallthrough
case 3:fmt.Println(数字是3)
default:fmt.Println(未知数字)
}输出结果 数字是2
数字是3select用于在多个通道操作中进行选择和执行。 select语句用于在多个通道操作中进行选择和执行。它类似于switch语句但是针对通道操作。select语句会监听多个通道的操作一旦有某个通道操作可以进行就会执行对应的代码块。 package mainimport (fmttime
)func main() {ch1 : make(chan string)ch2 : make(chan string)go func() {time.Sleep(2 * time.Second)ch1 - Hello from channel 1}()go func() {time.Sleep(1 * time.Second)ch2 - Hello from channel 2}()select {case msg1 : -ch1:fmt.Println(msg1)case msg2 : -ch2:fmt.Println(msg2)}
}输出结果 Hello from channel 2因为ch2通道的操作先准备好了所以程序执行对应的代码块。 defer用于延迟执行函数调用通常用于释放资源或错误处理。 defer用于延迟执行函数调用通常用于释放资源或错误处理。被defer关键字修饰的函数调用会在包含它的函数执行完毕后才执行即使函数发生了错误也会执行。 示例代码 goCopy Codepackage mainimport fmtfunc main() {defer fmt.Println(这行代码会最后执行)fmt.Println(这行代码会第一个执行)
}输出结果 这行代码会第一个执行
这行代码会最后执行defer语句会将函数调用推迟到包含它的函数执行完毕后执行。 defer还可以用于关闭文件、释放锁、清理资源等操作确保在函数结束时这些操作一定会执行不受返回或错误的影响。