Golang基础_02-运算符及控制语句

注意事项

运算符

tips

  • Go中的运算符都是从左到右结合的
  • 优先级从高到低:
    这里写图片描述

移位运算

a << 10
//a*(2^10)
//右移类似

位运算符

/*
6 : 0110
11: 1011


----------


&   0010
|   1111
^   1101
&^  0100 
//第四个运算符是,第二行这一位如果是1,就上0,如果是0,就上第一行该位置的数
*/

运算符&&和||

  • &&如果第一个不符合,就不会计算第二个表达式
  • II同理如果第一个符合了,就不会去计算第二个表达式

指针

  • Go中虽然保留了指针,但是不支持指针运算以及"->"运算符,直接采用"."来操作指针目标对象成员
  • 操作符"&"去变量地址,使用"*"通过指针间接访问目标对象
  • 默认值是nil,不是NULL
    递增递减语句
  • 在Go中,++与--作为语句而不是表达式
  • 表达式是可以放在等号右边的,语句不可以
  • 而且 --a 是不可以的,a-- 才行

控制语句

判断语句if

  • 不加括号,一个空格就行
  • 可以加一个局部变量的初始化,定义域只在if语句中
    if a:=1 ; a>0 { }
  • 左大括号必须和if语句在同一行

循环语句for

  • 只有for一个循环语句关键字,但是支持三种形式
  • 左大括号要和for关键字在同一行
  • 初始化和步进表达式可以是多个值
  • 条件语句每次都会被检查,故不建议在条件语句中使用函数,尽量提前计算好条件,并用变量或者向量代替
func main(){
    a := 1
    for {
        a++
        if a>3 {
            break;
        }
    }
//do...while型
}
func main(){
    a := 1
    for a<=3 {
        a++
    }
//while型
}
func main(){
    a := 1
    b := "string"
    l := len(b)
    for i := 0; i<l ; i++{
        a++
    }
//for型
}

选择语句switch

  • 左大括号必须与switch在一行
  • case后面的条件语句可以是任何类型或者表达式
  • 不需要写break,一旦符合条件就会自动终止,如果想继续执行下一个case,需要加上 fallthrough 语句
  • switch后面可以加一个初始化表达式,要加分号,如果只是单纯的变量名,不用加分号
func main(){
    a := 1
    switch a {
    case 0:
        fmt.Println("a=0")
    case 1:
        fmt.Println("a=1")
    default:
        fmt.Println("nothing")
    }
    fmt.Println(a)
}
//a=1
//1
func main(){
    a := 1
    switch {
    case a>=0:
        fmt.Println("a=0")
        fallthrough
    case a>=1:
        fmt.Println("a=1")
    default:
        fmt.Println("nothing")
    }
    fmt.Println(a)
}
/*
a=0
a=1
1
*/
func main(){
    a := 6
    switch a := 0; {
    case a>=0:
        fmt.Println("a=",a)
        a++
        fallthrough
    case a>=1:
        fmt.Println("a=",a)
    default:
        fmt.Println("nothing")
    }
    fmt.Println(a)
}
/*
a= 0
a= 1
6
*/

跳转语句goto, break, continue

  • 三个语法都可以配合标签使用
  • 标签名区分大小写,若不使用会造成编译错误
  • break和continue配合标签可以用于多层循环的跳出,如果没有用标签,就是正常的作用
  • goto是调整执行位置,与其他两个语句配合标签的结果并不一样
func main(){
LABEL1:
    for {
        for i:=0 ; i< 10 ;i++ {
            if i>3 {
                break LABEL1
                //continue LABEL1  死循环
                //goto LABEL1  重新执行这个大循环
            }
        }
    }
}

猜你喜欢

转载自www.cnblogs.com/leafs99/p/golang_basic_02.html