常量与运算符
常量
常量的定义
显示定义
常量的声明以关键字const开头,后接变量类型进行赋值,行尾没有其他标点符号。
const 常量名 常量类型 = value
注意:一个常量被声明之后可以不使用,但是变量一旦声明则必须使用。
隐式定义
const 常量名 = value
常量组的定义
如果程序需要使用大量值相同的常量,我们可以直接定义常量组。
在定义常量组时,若不提供初值,则表示将使用上行的表达式。
package main
import "fmt"
const (
a=3.14
b
c
d=100
)
func main() {
fmt.Println("a:",a)
fmt.Println("b:",b)
fmt.Println("c:",c)
fmt.Println("d:",d)
}
执行结果如下:
a: 3.14
b: 3.14
c: 3.14
d: 100
常量枚举
枚举通常是针对一个有穷序列集而言,一个集的枚举就是列出有穷序列集的所有成员。Go语言现阶段没有枚举,但是我们可以利用一种特殊常量“iota”来模拟枚举。
运算符
算术运算符
运算符 | 说明 |
---|---|
% | 取模:左操作除以右操作数 |
++ | 自增:操作数加1 |
- - | 自减:操作数减1 |
比较运算符
运算符 | 说明 |
---|---|
== | 比较对象是否相等 |
!= | 比较两个对象是否不相等 |
赋值运算符
运算符 | 说明 |
---|---|
= | 将右边值赋值给左边 |
+= | 将左边值加右边值 |
-= | 将左边值减右边值 |
*= | 将左边值乘右边值 |
/= | 将左边值除以右边值 |
%= | 将左边值对右边值做取模 |
位运算符
运算符 | 说明 |
---|---|
& | 按位与,1 0 则 0, 1 1则 1 |
| | 按位或,0 0 则 0,有1 则1 |
^ | 按位异或,相对应位值相同为0,否则为1 |
<< | 按位左移,左操作数按位左移右操作数指定的位数 |
>> | 按位右移,右操作数按位右移左操作数指定的位数 |
逻辑运算符
运算符 | 说明 |
---|---|
&& | 逻辑与,当且仅当两个操作数为真,条件为真 |
|| | 逻辑或,两个操作数中任意一个为真,条件为真\ |
! | 逻辑非,用来反转操作数的逻辑状态。如果条件为true,则逻辑非运算符将得到false |
其他运算符
运算符 | 说明 |
---|---|
& | 返回变量的存储地址 |
* | 指针变量 |
^ | 按位取反 |
package main
import "fmt"
func main() {
a := 1
var p *int //声明指针p,指针类型为int类型
p = &a //指针p取变量a的地址
fmt.Println("^a=",^a)
fmt.Println("变量a的地址为:",p)
}
注意:正数1按二进制位展开为001,其中最左边0表示正数,取反操作对所有二进制位取反,结果为110,其中最左边1表示负数,即十进制-2.