04控制结构

本文详细介绍了Go语言中的分支结构,包括if-else和switch-case,并展示了它们的用法和特点。在循环结构方面,讲解了类似while的for循环、C风格的for循环以及迭代循环,同时提供了具体的代码示例。此外,还特别提到了Go语言中switch-case的自动退出特性以及在接口类型判断中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

分支结构

if-else

ifelse if的控制条件不用使用括号括住。但要记住,执行开始的左括号{要和条件位于同一行。例子:

rand.Seed(time.Now().Unix())//设置随机种子
a:=rand.Intn(3)//在0,1,2中随机
if a==0{   //{要和条件语句在同一行
    fmt.Println("a=0")
}else if a==1{
    fmt.Println("a=1")
}else {
    fmt.Println("a=2")
}

switch-case

c++语言不同。go中的case不用每一条都去加break语句。当匹配了其中一个case后,会自动退出。

rand.Seed(time.Now().Unix())
a:=rand.Intn(3)
switch a {
case 0:
    fmt.Println("a=0")
case 1:
    fmt.Println("a=1")
default:
    fmt.Println("a=2")
}

同时,go中的switch-case还可用于接口类型的判断。根据类型去执行不同的case,这在函数参数传递中比较有用。例子:

func type_switch(a interface{}){
	switch a.(type) {
	case int:
		fmt.Println("int 型",a)
	case float64:
		fmt.Println("float64 型",a)
	case bool, string:
		fmt.Println("bool 或 string 型",a )
	default:
		fmt.Println("未知型",a)
	}
}
func main() {
	a:=true
	b:=123
	c:=1.2
	type_switch(a)
	type_switch(b)
	type_switch(c)
}
/*
输出:
bool 或 string 型 true
int 型 123
float64 型 1.2
*/

循环结构

类似while的for循环

go中没有while作为关键字的循环。但以下循环和while相似:

a:=1
for a<10{
    fmt.Print(a," ")
    a++
}
/*输出:
1 2 3 4 5 6 7 8 9 
*/

类c的for循环

c语言中,for循环的形式一般为:for(int i=0;i<10;i++)go中和这个写法相似的for循环写法为:

for a:=1;a<10;a++{
    fmt.Print(a," ")
}

迭代循环

作用与可迭代的参数上。对于切片和数组,接收的第一个参数为下标,第二个参数为下标对应的值*(可以不接收第二个参数)。对于map,第一个参数为key,第二个参数为key对应的value(可以不接受)*。例子:

var a []int=make([]int,5)
for i:=range a{//只接收一个参数。即为a的下标
    a[i]=i*i
}
for _,k:=range a{//_代表接收但是不打算使用。k为a的元素
    fmt.Print(k," ")
}
/*
输出:
0 1 4 9 16 
*/

a[i]=ii
}
for _,k:=range a{//_代表接收但是不打算使用。k为a的元素
fmt.Print(k," ")
}
/

输出:
0 1 4 9 16
*/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值