Go语言运算符

Go 语言内置的运算符有:算术运算符、关系运算符、逻辑运算符、位运算符、赋值运算符、其余运算符。golang

算术运算符

运算符 描述

+函数

相加优化

-spa

相减指针

*code

相乘blog

/编译器

相除string

%it

求余

++

自增

--

自减

关系运算符

运算符 描述

==

检查两个值是否相等,若是相等返回 True 不然返回 False。

!=

检查两个值是否不相等,若是不相等返回 True 不然返回 False。

>

检查左边值是否大于右边值,若是是返回 True 不然返回 False。

<

检查左边值是否小于右边值,若是是返回 True 不然返回 False。

>=

检查左边值是否大于等于右边值,若是是返回 True 不然返回 False。

<=

检查左边值是否小于等于右边值,若是是返回 True 不然返回 False。

逻辑运算符

运算符 描述

&&

逻辑 AND 运算符。 若是两边的操做数都是 True,则条件 True,不然为 False。

||

逻辑 OR 运算符。 若是两边的操做数有一个 True,则条件 True,不然为 False。

!

逻辑 NOT 运算符。 若是条件为 True,则逻辑 NOT 条件 False,不然为 True。

位运算符

运算符 描述

&

按位与运算符"&"是双目运算符。 其功能是参与运算的两数各对应的二进位相与。

|

按位或运算符"|"是双目运算符。 其功能是参与运算的两数各对应的二进位相或。

^

按位异或运算符"^"是双目运算符。 其功能是参与运算的两数各对应的二进位相异或,当两对应的二进位相异时,结果为1。

<<

左移运算符"<<"是双目运算符。左移n位就是乘以2的n次方。 其功能把"<<"左边的运算数的各二进位所有左移若干位,由"<<"右边的数指定移动的位数,高位丢弃,低位补0。

>>

右移运算符">>"是双目运算符。右移n位就是除以2的n次方。 其功能是把">>"左边的运算数的各二进位所有右移若干位,">>"右边的数指定移动的位数。

赋值运算符

运算符 描述

=

简单的赋值运算符,将一个表达式的值赋给一个左值

+=

相加后再赋值

-=

相减后再赋值

*=

相乘后再赋值

/=

相除后再赋值

%=

求余后再赋值

<<=

左移后赋值

>>=

右移后赋值

&=

按位与后赋值

^=

按位异或后赋值

|=

按位或后赋值

其余运算符

运算符 描述

&

取地址符,返回变量存储地址

*

取值符,返回指针的变量

运算符优先级

有些运算符拥有较高的优先级,二元运算符的运算方向均是从左至右。下表列出了全部运算符以及它们的优先级,由上至下表明优先级由高到低:

优先级 运算符

7

^ !

6

* / % << >> & &^

5

+ - | ^

4

== != < <= >= >

3

<-

2

&&

1

||

特殊标识符

“_”是特殊标识符,又称占位符(空标识符号),用来忽略结果。

一、特殊标识符应用在import中

在Go语言里,import的做用是导入其余package。

特殊标识符(如:import _ oldboy/golang)的做用:当导入一个包时,该包下的文件里全部init()函数都会被执行,然而,有些时候咱们并不须要把整个包都导入进来,仅仅是是但愿它执行init()函数而已。这个时候就可使用 import _ 引用该包。即便用(import _ 包路径)只是引用该包,仅仅是为了调用init()函数,因此没法经过包名来调用包中的其余函数。

示例:
代码目录结构

src 
|
+--- main.go            
|
+--- oldboy
       |
        +--- oldboy.go

main.go

package main

import _ "./oldboy"

func main() {
    // oldboy.Print() 
    //编译报错:./main.go:6:5: undefined: oldboy
}

oldboy.go

package oldboy

import "fmt"

func init() {
    fmt.Println("The old boy welcomes you.")
}

func Print() {
    fmt.Println("Hello!")
}

运行结果:

The old boy welcomes you.

二、特殊标识符应用在代码中

package main

func main() {
    str, _ := oldboy()
    _ = str
}

func oldboy() (str string, err error) {
    str = "The old boy welcomes you."
    err = nil
    return
}

解释:

占位符,意思是那个位置本应赋给某个值,可是我们不须要这个值。因此就把该值赋给占位符,意思是丢掉不要。这样编译器能够更好的优化,任何类型的单个值均可以丢给占位符。

第一个占位符:这种状况是忽略函数返回值,函数返回两个结果,而你只想要一个结果。

第二个占位符:这种状况是忽略未使用的局部变量,若是声明的局部变量,不使用,编译器是会报错。

相关文章
相关标签/搜索