GO – if判断,for循环,switch语句,数组的使用

1.if – else if – else的使用

package main    import "fmt"    func main() {      // 1.简单使用      var a=10      if a==10 {  // 这个位置不能回车,不能换行          fmt.Println(a)      }        //2 if - else      var b =16      if b==20 {          fmt.Println("20")      }else{          fmt.Println("15")      }        //3 if - else if - else      var c =20      if c==20 {          fmt.Println("20")      }else if c==15 {          fmt.Println("15")      }else {          fmt.Println("10")      }  }

2.for循环

package main    func main() {      // 基本语法      for 初始化; 条件; 自增/自减{        }    }

2.1简单使用

    for a:=0; a<10; a++  {          fmt.Println(a)      }

2.2省略初始化

    a :=0      for ;a<10 ; a++ {          fmt.Println(a)      }

2.3省略初始化和自增自减

    a :=0      for ;a<10 ;  {          fmt.Println(a)          a++      }

2.4.省略初始化和自增自减(进阶版)

注意:两个分号省略了,(类似while循环)

    a :=0      for a<10  {          fmt.Println(a)          a++      }

2.5.死循环

    // 死循环一      for true{          fmt.Println("ak47")      }        // 死循环二(三部分都省略了)      for {          fmt.Println("ak47")          break      }

3.switch语句

3.1基本使用

package main    import "fmt"    func main() {        // 1.基本使用      var a = 10      switch a {      case 1:  //相当于if a==1          fmt.Println("1")      case 5:          fmt.Println("5")      case 10:          fmt.Println("10")      }  }

3.2default

    var b = 18      switch b {      case 1:          fmt.Println("1")      case 5:          fmt.Println("5")      case 10:          fmt.Println("10")      default:   //相当于else          fmt.Println("你是蔡徐坤")      }

3.3多表达式判断

(只要符合期中一个条件就成立)

    var c = 18      switch c {      case 1, 2, 5:          fmt.Println("1")      case 6, 7:          fmt.Println("5")      case 10, 15, 18:          fmt.Println("10")      default:          fmt.Println("你是蔡徐坤")      }

3.4无表达式

    var d = 30      switch {      case d == 20:          fmt.Println("1")      case d == 30:          fmt.Println("5")      case d == 40:          fmt.Println("10")      default:          fmt.Println("你是蔡徐坤")      }

3.5无表达式

and(和)的条件 && 或(or)的条件 ||

    var e = 20      var d = 30      switch {      case d == 30 && e==20:   //同时成立          fmt.Println("1")      case d == 30:          fmt.Println("5")      case d == 40:          fmt.Println("10")      default:          fmt.Println("你是蔡徐坤")      }

3.6.fallthrough

无条件执行下一个case(穿透)

    var f = 2      switch  {      case f == 1:          fmt.Println(1)      case f == 2:          fmt.Println(2)          fallthrough   //一旦碰到 fallthrough会无条件执行下面的语句      case f == 6:          fmt.Println(250)          fallthrough   ////只要代码读到fallthrough与他紧挨着的语句,无论是否满足条件,他都会执行里面的内容      case f == 3:          fmt.Println(666)      }

4.数组

4.1定义数组

package main  import "fmt"  func main() {      // 同一类元素的集合, 不允许混合不同元素      // 定义数组(定义了一个大小为4的int类型数组)      var a [4]int  // 四个为0的数组      fmt.Println(a)  // int默认值为0  }

4.2使用数组

(从索引0开始)

package main  import "fmt"  func main() {      var a [4]int      fmt.Println(a)       a[0] = 10      fmt.Println(a[0])      fmt.Println(a)  }

4.3定义并赋初始值(三种方式)

package main  import "fmt"  func main() {      // 1.      //var b [4]int = [4]int{1,2,3,4}      // 2.      //var b = [4]int{1,2,3,4}      // 3.      b := [4]int{1,2,3,4}      fmt.Println(b)  }

4.4定义并赋初值(其他方式)

package main  import "fmt"  func main() {      //var c [4]int = [4]int{1,2}  // 只给前两个赋值      //var c [4]int = [4]int{1:2}  // 只给第二个赋值,前面是索引,后面是值      //var c [4]int = [4]int{1:2,2:3}  // 只给第二,三个个赋值      var c [4]int = [4]int{2:3,1:2}  // 只给第二,三个个赋值      c[3] = 100      fmt.Println(c)  }

4.5数组大小固定(大小一旦定义,不能改变)

package main  import "fmt"  func main() {      //var c [4]int = [5]int{1,2}   // 错的      //var c [4]int = [4]int{1,2,3,4,5}   // 错的        //var c [4]int = [4]int{1,2,3,4}      //a[4] = 10  //错的,最大索引为3      //fmt.Println(a[4])  //错的  }

4.6.数组的大小是类型的一部分

package main  import "fmt"  func main() {      // 下面两个不是同一种类型(不能比较和加减)      var a [3] int      var b [4] int  }

4.7.数组的值类型(引用类型)

// 说法不准确 (因为py中一切皆对象,不可变数据类型也是对象,对象就是地址)

// py中的不可变类型(值类型)当做参数传递到函数中,如果在函数中改变该值,原值不会变

// py中的可变类型(引用类型:地址)当做参数传递到函数中,如果在函数中改变该值,原值会改变

// go中值类型,当做参数传递时,copy一份过去,值被copy是相当于复制了一份过去

package main  import "fmt"  func main() {      var d = [4]int{1,2,3,4}      test(d)  // 当做参数传递过去      fmt.Println(d) // 原值没有改变  }    func test(d [4]int)  {      d[0] = 100   // 修改值      fmt.Println(d) // 传过来的数组改变了,但原值不变  }

4.8数组的长度(len)

package main  import "fmt"  func main() {      var e = [4]int{1,2,3,4}      fmt.Println(len(e))  }

4.9数组的循环

package main  import "fmt"  func main() {      // 方法一:      var a = [4]int{1,2,3,4}      for i:=0 ;i<len(a) ;i++  {          fmt.Println(a[i])      }        //方式二:(range关键字,它不是内置函数)把数组放在range关键字后      var b = [4]int{1,55,3,66}      for z:=range b{          //fmt.Println(z)          fmt.Println(b[z])  //这不是正统的用法      }        // 当用一个变量来接收时,这个变量就是索引      // 当用两个变量来接收时,这两个变量就是索引和值      for k,v:=range a {          fmt.Println(k,v)      }        // 当你不想取索引的时候也可以用下划线代替      for _,v:=range a {          fmt.Println(v)      }  }

4.10多维数组

package main  import "fmt"  func main() {      var a [4][3]int      fmt.Println(a)      a[1][1] =100  // 修改值      fmt.Println(a)  }

4.11多维数组定义并赋初值

package main  import "fmt"  func main() {      var a = [4][3]int{{1,1,1},{2,2,2},{3,3,3},{4,4,4}}      fmt.Println(a)        // 把数组第二个位置初值改为[6,6,6]      var b = [4][3]int{1:{6,6,6}}      fmt.Println(b)        var c = [4][3]string{1:{"6","6","6"}}      fmt.Println(c)      // 字符串的空值是空字符串  ""      // int类型空值是  0      // 数组的空值,取决于类型的空值      var d [4][3]string      fmt.Println(d)  }