免费企业网站认证,wordpress建视频网站可以吗,路北网站制作,个人网站 百度推广目录 1.条件语句
1.1 if语句
1.2 if-else语句
1.3 switch语句
1.4 select语句
2.循环语句
2.1循环处理语句
2.2循环控制语句 3.go语言关键字 1.条件语句
和c语言类似#xff0c;相关的条件语句如下表所示#xff1a; 1.1 if语句
if 布尔表达式 {/* 在布尔表达式为 t…目录 1.条件语句
1.1 if语句
1.2 if-else语句
1.3 switch语句
1.4 select语句
2.循环语句
2.1循环处理语句
2.2循环控制语句 3.go语言关键字 1.条件语句
和c语言类似相关的条件语句如下表所示 1.1 if语句
if 布尔表达式 {/* 在布尔表达式为 true 时执行 */
}1.2 if-else语句
if 布尔表达式 {/* 在布尔表达式为 true 时执行 */
} else {/* 在布尔表达式为 false 时执行 */
}1.3 switch语句
其中的变量v可以是任何类型val1和val2可以是同类型的任意值类型不局限为常量或者整数或者最终结果为相同类型的表达式。
switch v {case val1:...case val2:...default:...
}1.4 select语句
select 是 Go 中的一个控制结构类似于用于通信的 switch 语句。每个 case 必须是一个通信操作要么是发送要么是接收。它将会随机执行一个可运行的 case。如果没有 case 可运行它将阻塞直到有 case 可运行。一个默认的子句应该总是可运行的。
select {case communication clause :statement(s); case communication clause :statement(s);/* 你可以定义任意数量的 case */default : /* 可选 */statement(s);
}注意 每个case必须都是一个通信所有channel表达式都会被求值所有被发送的表达式都会被求值如果任意某一个通信都可以它就执行其他就忽略如果有多个case都可以运行select就会随机挑选一个来执行。如果没有一个case可以被运行如果有default子句就执行default子句select将被阻塞直到某个通信可以运行从而避免饥饿问题。 package mainimport (fmttime
)func main() {ch1 : make(chan string)ch2 : make(chan string)go func() {time.Sleep(2 * time.Second)ch1 - one}()go func() {time.Sleep(3 * time.Second)ch2 - two}()select {case msg1 : -ch1:fmt.Println(Received, msg1)case msg2 : -ch2:fmt.Println(Received, msg2)}
}在这个示例中select 语句会等待 ch1 或 ch2 中的任意一个 channel 接收到数据。由于 ch1 在 ch2 前被写入所以 Received one 会被打印出来。 select 语句非常适合用于多路复用 channel例如在并发编程中处理多个 channel 的情况下。通过 select 语句可以实现并发代码中的异步通信和超时处理以及其他复杂的并发模式。 2.循环语句
2.1循环处理语句
go中时使用for实现循环的共有三种形式
语法和c语言中的for相同for init; condition; post {}和c语言中的while相同for condition{}和c语言中的for(;;)相同for{}
除此以外for循环还可以直接使用range对slice、map、数组以及字符串等进行迭代循环格式如下
for key, value : range oldmap {newmap[key] value
}2.2循环控制语句
控制语句详解break中断跳出循环或者switch语句continue跳过当前循环的剩余语句然后继续下一轮循环goto语句将控制转移到被标记的语句
break break主要用于循环语句跳出循环和c语言中的使用方式是相同的。且在多重循环的时候还可以使用label标出想要break的循环。 a : 0
for a5 {fmt.Printf(%d\n, a)aif a2 {break;}
}
/* output
0
1
2
*/continue Go 语言的 continue 语句 有点像 break 语句。但是 continue 不是跳出循环而是跳过当前循环执行下一次循环语句。在多重循环中可以用标号 label 标出想 continue 的循环。 // 不使用标记fmt.Println(---- continue ---- )for i : 1; i 3; i {fmt.Printf(i: %d\n, i)for i2 : 11; i2 13; i2 {fmt.Printf(i2: %d\n, i2)continue}}/* output
i: 1
i2: 11
i2: 12
i2: 13
i: 2
i2: 11
i2: 12
i2: 13
i: 3
i2: 11
i2: 12
i2: 13
*/// 使用标记fmt.Println(---- continue label ----)re:for i : 1; i 3; i {fmt.Printf(i: %d, i)for i2 : 11; i2 13; i2 {fmt.Printf(i2: %d\n, i2)continue re}}/* output
i: 1
i2: 11
i: 2
i2: 11
i: 3
i2: 11
*/goto goto语句主要是无条件转移到过程中指定的行。goto语句通常和条件语句配合使用可用来实现条件转移、构成循环以及跳出循环体等功能。但是并不主张使用goto语句以免造成程序流程混乱。 var a int 0
LOOP: for a5 {if a 2 {a a1goto LOOP}fmt.Printf(%d\n, a)a
}/*
output:
0
1
2
3
4
*/3.go语言关键字
直接列表供大家了解go中的关键字如下