• 速战速决 go go 基础: 语句(if/else, switch, for, continue, break, goto)


    速战速决 go https://github.com/webabcd/GoSample
    作者 webabcd

    速战速决 go - go 基础: 语句(if/else, switch, for, continue, break, goto)

    示例如下:

    basic/statement.go

    // go 基础 - 语句(if/else, switch, for, continue, break, goto)
    // 注:需要用到 {} 的语句,{ 必须要与语句在同一行,否则会报错
    
    package basic
    
    import (
    	"fmt"
    	"math/rand"
    	"time"
    )
    
    func StatementSample() {
    	statement_sample1()
    	statement_sample2()
    	statement_sample3()
    	statement_sample4()
    
    	var a int = 123
    	// {} 是一个独立的块,可以访问父级的变量,但是无法访问同级或子级 {} 中的变量
    	{
    		var b int = 456
    		fmt.Println(a, b) // 123 456
    	}
    	{
    		var b int = 456
    		fmt.Println(a, b) // 123 456
    	}
    	// 下面这句会报错,因为无法访问子级 {} 中的变量
    	// fmt.Println(b)
    }
    
    // if/else
    func statement_sample1() {
    	// 0 到 2 之间的随机数
    	a := rand.New(rand.NewSource(time.Now().UnixNano())).Intn(3)
    	fmt.Printf("a: %d\n", a)
    
    	if a == 0 { // { 必须和关键字在同一行,否则会报错。另外,即使 if 后只有一条语句也不能省略 {}
    		fmt.Println("a == 0")
    	} else if a == 1 { // } 必须和 else if 在同一行,否则会报错
    		fmt.Println("a == 1")
    	} else {
    		fmt.Println("a == 2")
    	}
    
    	// if 语句也支持先赋值,再判断
    	if b := a; b > 0 {
    		fmt.Println("b := a; b > 0")
    	}
    }
    
    // switch
    func statement_sample2() {
    	// 0 到 9 之间的随机数
    	a := rand.New(rand.NewSource(time.Now().UnixNano())).Intn(10)
    	fmt.Printf("a: %d\n", a)
    
    	// 注:switch 的 case 是不需要 break 的
    	switch a {
    	case 0, 1: // case 支持多个值
    		fmt.Println("case 0, 1")
    	case 2:
    		fmt.Println("case 2")
    	default:
    		fmt.Println("default")
    	}
    
    	// switch 后面不跟变量,则可以在 case 中使用条件语句
    	switch {
    	case a < 5:
    		fmt.Println("a < 5")
    	case a < 10:
    		fmt.Println("a < 10")
    		fallthrough // switch 的 case 不需要 break 了,那么我就想继续走下一句怎么办呢?用 fallthrough 即可
    	case a < 8:
    		fmt.Println("a < 8")
    	}
    }
    
    // for
    // for 语句支持 continue 和 break
    func statement_sample3() {
    	// 经典 for 语句
    	for a := 0; a < 3; a++ {
    		fmt.Println(a)
    	}
    
    	b := 0
    	// for 后的语句不需要的话可以不写
    	for ; ; b++ {
    		if b >= 3 {
    			break
    		}
    		fmt.Println(b)
    	}
    
    	c := 0
    	// for 后的语句全省略(无限循环)
    	for {
    		fmt.Println(c)
    		c++
    		if c >= 3 {
    			break
    		}
    	}
    
    	var d int
    	// for 后只跟条件语句(相当于 while 循环)
    	for d < 3 {
    		fmt.Println(d)
    		d++
    	}
    
    	e := []int{1, 2, 3}
    	// for...range 用于遍历数组或切片或字典或字符串
    	for index, value := range e {
    		fmt.Printf("index:%d, value:%d\n", index, value)
    	}
    }
    
    // goto
    func statement_sample4() {
    	goto onPrint
    
    onPrint:
    	fmt.Println("goto")
    }
    
    

    速战速决 go https://github.com/webabcd/GoSample
    作者 webabcd

  • 相关阅读:
    dependencyManagement、parent与dependencies
    maven和gradle中,dependency和plugin的区别
    SpringMVC与Struts2区别
    RESTful风格与RESTful Api
    DBCP连接池配置参数
    js 函数的传值问题
    js 重载i
    js 对象与函数的区别
    子窗口 父窗口传值
    验证码
  • 原文地址:https://www.cnblogs.com/webabcd/p/go_basic_statement.html
Copyright © 2020-2023  润新知