版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/guanchunsheng/article/details/79420434
1 位运算
二元运算符 | 说明 |
---|---|
& | 与 |
| | 或 |
^ | 异或 |
&^ | 清零 |
一元运算符 | 说明 |
---|---|
^ | 按位补足.这个再查查,没看懂 |
<< , >> | 左移右移 |
2 逻辑运算符
运算结果是bool类型
逻辑运算符 |
---|
== |
!= |
< |
<= |
> |
>= |
3 算术运算符
算术运算符 | 说明 |
---|---|
+ | |
- | |
* | |
/ | 整数的 / 运算,结果还是整数。5 / 2 = 2 |
% | 模运算%只能用于整数。 |
保留C家族的简写方式:+=, -=, *=, /=, %=, ++, - -
注意:++ - - 只能用于自身的增减,并不能用于表达式取值。也就是说:
i++ //可以 a = i++ //不可以,不能作为表达式取值 foo(i++) //不可以,不能作为参数取值
4 指针
Go有指针,但是指针本身不能进行指针计算。
取地址
var i = 5
&i
指针类型变量
var intP *int
intP = &i
fmt.Printf("location in memory: %p\n", intP) //注意是%p
间接引用(取内存、反引用)
*intP
fmt.Printf("var value: %d\n", *intP)
var == *(&var) //任何变量var,这个都是true
c := *intP++ //不合法,指针在Go中不能运算
定义但是没有分配到任何变量的指针变量,其值是nil
5 多重赋值
const beef, two, c = "eat", 2, "veg"
a, b, c := 1, 2.0, "dollar"
多重赋值挺有用的,跟python一样,交换两个变量很简单:
a, b = b, a
a, b = funcName()
_, b = funcName()
可以用 _ 占位置,接受函数的多个返回值,而不需要用的那部分。