python转go学习笔记———流程控制

流程控制

流程控制编程语言都差不多,单双分支、循环啥的,具体细节具体细说。
单双分支中python于go基本相同

func main() {
	// golang支持在if中直接定义变量
	if age := 20 ; age > 18 {
		fmt.Println("成年就爬")
	}

	// golang中else不能再下一行出现
	if age > 18 {
		fmt.Println("成年就爬")
	} else {
		fmt.Println("未成年也爬")
	}
    
    //多分支不同于python的是,golang没有elif语句
    if age > 18 {
		fmt.Println("成年就爬")
	} else if age > 16{
		fmt.Println("小青年也爬")
	} else {
		fmt.Println("未成年也爬")
	}
}

对于switch分支,python可以用字典实现,所以python转go的小伙伴可以学习一下,go还有一个与其他编程语言java等不同的是:

  1. switch后面不用加break,默认匹配后退出;
  2. case后可以带多个表达式;
  3. case后如果是常量,是不能重复的
  4. switch后可以不带表达式,类似if-else
  5. switch穿透 - fallthrough,case语句后增加fallthrough,则会继续执行下一个case
func main() {
    var n int = 10
	var num int
	fmt.Printf("请输入1-7中的数字:")
	fmt.Scanln(&num)
	switch num {
	case 1: fmt.Println("周一")
        fallthrough					// 继续执行
	case 2: fmt.Println("周二")
	case 3: fmt.Println("周三")
	case 4: fmt.Println("周四")
	case 5: fmt.Println("周五")
	case 6: fmt.Println("周六")
	case 7: fmt.Println("周天")
    //case 7: fmt.Println("周末") 	//常量不能重复
    case 8,9,n: fmt.Println("彳亍")	// case后可带变量
    case num < 0: fmt.Println("负数是我没想到的")
	default:
		fmt.Println("让你输数字,李在赣神魔")
	}
}

for循环:没啥区别,和c很像,(go没有while循环)

func main() {
    // 第一种写法
	for i:=1;i<=10;i++ {
		fmt.Println(i)
	}
    // 第二种写法
    j := 1
	for j <= 10 {
		fmt.Println(j)
		j++
	}
    // 第三种写法(感觉很像while循环)
    k := 1
	for{
		if k < 10 {
			fmt.Println(k)
		} else {
			break  // break跳出循环
		}
		k++
	} // 等价与 for ;; {}
}

golang还提供了和python很像的for-range遍历方式:

func main() {
    var str string = "hello,world!嘻嘻"
    // for循环遍历
	for i:=0;i<len(str);i++{
		//fmt.Printf("%T\n",str[i])
		fmt.Printf("%c",str[i])		// 这种方式遍历中文字符串是乱码(按照字节方式遍历)
	}
    // for-range遍历
    for _,val := range str {
		//fmt.Printf("%T,%T\n",val)
        fmt.Printf("%c\n",val)		// 这种方式可以遍历中文字符串(按照字符方式遍历)
	}
}

golang中break语句在多层嵌套循环中,默认跳出最近的for循环,但可以通过标签来指明要终止哪一层的语句块

func main() {	
	label1:		
	for i:=0;i<4;i++ {
		//label2:
		for j:=0;j<10;j++{
			if j == 2 {
				//break
				//break label2
				break label1
			}
			fmt.Println("j = ",j)
		}
	}
}

golang中continue语句在多层嵌套循环中,可以通过标签来指明要跳过哪一层的语句块

func main() {	
	xixi:		// 不一定非要写label这个词,只要能作为标识符都可以
	for i:=0;i<4;i++ {
		//haha:
		for j:=0;j<10;j++{
			if j == 2 {
                //continue
				continue xixi
				//continue haha
			}
			fmt.Println("j = ",j)
		}
	}
}

goto语句:

  1. goto语句可以无条件地转移到程序中指定的行
  2. goto语句通常与条件语句配合使用,可以实现条件转移,跳出循环体等功能

有些人说goto语句很鸡肋,有些人又觉得很好用。大家自我感觉。

func main() {
    fmt.Println("周一")
	goto label			//可以配合if语句使用
	fmt.Println("周二")
	fmt.Println("周三")
	label:
	fmt.Println("周四")
	fmt.Println("周五")
	fmt.Println("周六")
	fmt.Println("周天")
}
//周一
//周四
//周五
//周六
//周天

你可能感兴趣的:(GO,golang,python,开发语言,流程控制,go语言)