package main
import "fmt"
const a int = 1
const b = "B"
const (
c = "c"
d = len(c)
e = d * 2
)
const f, g, h, i = 1, true, "h", len("love")
const (
j, k, l, m = 1, "a", true, float64(len(k)) * 100.123
)
func main() {
fmt.Println(a, b, c, d, e, f, g, h, i, j, k, l, m)
}
package main
import "fmt"
const (
a = "a"
b
c
d
e = iota
f
g
)
const (
h = iota
i
j
)
func main() {
fmt.Println(a, b, c, d, e, f, g, h, i, j)
}
package main
import "fmt"
const (
_ = iota
KB float64 = 1 << (iota * 10)
MB
GB
TB
PB
EB
ZB
YB
)
func main() {
fmt.Println(KB)
fmt.Println(MB)
fmt.Println(GB)
fmt.Println(TB)
fmt.Println(PB)
fmt.Println(EB)
fmt.Println(ZB)
fmt.Println(YB)
}
^ ! (一元运算符)
* / % << >> & &^
+ - | ^ (二元运算符)
== != < <= >= >
<- (专门用于channel)
&&
||
package main
import "fmt"
/*
6: 0110
11: 1011
---------
& 0010 只有都是1的时候,才是1
| 1111 只要有一个是1,就是1
^ 1101 只有一个是1的时候,才是1
&^ 0100 第二个参数为1的,把第一个参数的改为0
*/
func main() {
/*
正整数的补码是其二进制表示,与原码相同;
负整数的补码,将其对应正数二进制表示所有位取反(包括符号位,0变1,1变0)后加1
按位取反 0 0010
取补码 0 0010
按位取反 1 1101 这个也是补码,
减去1 1 1100
再取反, 1 0011 但符号位不变
得 -3
*/
fmt.Println(^2)
fmt.Println(!true) //false
fmt.Println(1 << 10) //1024
fmt.Println(1 << 10 >> 10) //1024
fmt.Println(6 & 11) //0010
fmt.Println(6 | 11) //1111
fmt.Println(6 ^ 11) //1101
fmt.Println(6 &^ 11) //0100
}
Go虽然保留了指针,但与其它编程语言不同的是,在Go当中不 支持指针运算以及”->”运算符,而直接采用”.”选择符来操作指针 目标对象的成员
package main
import "fmt"
func main() {
a := 1
var p *int = &a
fmt.Println(p)
fmt.Println(*p)
}
在Go当中,++ 与 – 是作为语句而并不是作为表达式
a := 1
a++
a--
//这是不允许的,只能作为语句,表达式不可以
//b := a++