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)
- }
来源: https://www.cnblogs.com/guapitomjoy/p/12406026.html