//二元运算符
/*
优先级的降序排列如下:
* / % << >> & &^
+ - | ^
== != < <= > >=
&&
||
同级别的运算符满足左结合律
*/
//整数
/*
有符号整数:int
有符号整数:int8,int16,int32,int64(8位,16位,32位,64位)
无符号整数:uint,uintptr
无符号整数:uint8,uint16,uint32,uint64(8位,16位,32位,64位)
至于int,uint,uintptr到底多大要看编译器给多大。
它们虽然都表示整数,但它们不属于同一类型,不能进行直接的运算。
另外,rune类型是int32类型的同义词;byte类型是uint8类型的同义词,uintptr足以完成存放指针。
*/
//浮点数
/*
浮点数:float32,float64
float32的有效位数约为6位
float64的有效位数约为15位
*/
//复数
/*
复数:complex64(实部:float32,虚部:float32)
复数:complex128(实部:float64,虚部:float64)
内置的complex函数创建复数,内置函数real提取实部,内置函数imag提取虚部
var x complex128 = complex(1, 2)
fmt.Println(real(x))
fmt.Println(imag(x))
还可以用==,!=判断两个复数是否相等
*/
//布尔值
/*
布尔值(bool):true,false
if和for语句里的条件就是bool值,比较操作符(如:<=)也能得出bool值结果。
*/
//字符串(string)
/*
字符串:不可变的字节序列(底层是数组)
s := "hello world"
len(s) ---len(s)返回字符串s的长度
s[0] ---s[0]访问字符串s下标为0的字符
s[i:j] ---产生一个新字符串,内容取自原字符串,下标从i(含边界)开始到j(不含边界)结束
i,j的默认值为:0,len(s),若省略i,j不写,就取默认值
s[:5] ---s[0:5]
s[7:] ---s[7:len(s)]
s[:] ---s[0,len(s)]
------------------------------------------------------------------------------------------------------
a := "hello" + "world"
字符串可通过+连接起来
a == b
还可以通过==,!=还判断两个字符串是否相等
------------------------------------------------------------------------------------------------------
我们常常需要数值与字符串之间转换,这由strconv包的函数完成。
x, err := strconv.Atoi("123")
将"123"转换为123
------------------------------------------------------------------------------------------------------
常量生成器iota
iota从0开始取值,逐项加1
const (
a int = iota
b
c
d
)
a:0, b:1, c:2, d:3
*/
补充
- Go语言中++,--只有后缀的写法(a++)。且不能被赋值或赋值或参与比较运算。
- a << n(表示a * 2^n)
- a >> n(表示a / 2^n,舍弃小数部分)
- Go语言不支持三元运算符