<h2 id="autoid-2-0-0">一、数据类型
布尔型
布尔类型 - 由两个预定义常量组成:true、
false,默认值为false
func main() {
<span style="color: #0000ff;">var<span style="color: #000000;"> (
a <span style="color: #0000ff;">bool <span style="color: #008000;">//<span style="color: #008000;">默认值为false
b <span style="color: #0000ff;">bool = <span style="color: #0000ff;">true<span style="color: #000000;">
)
fmt.Println(a,b)
}
数字类型
整型:
- uint8(无符号 8 位整型 (0 到 255))
- uint16(无符号 16 位整型 (0 到 65535))
- uint32(无符号 32 位整型 (0 到 4294967295))
- uint64(无符号 64 位整型 (0 到 18446744073709551615))
- int8(带符号 8 位整型 (-128 到 127))
- int16(带符号 16 位整型 (-32768 到 32767))
- int32(带符号 32 位整型 (-2147483648 到 2147483647))
- int64(带符号 64 位整型 (-9223372036854775808 到 9223372036854775807))
- float32(IEEE-754 32位浮点型数)
- float64(IEEE-754 64位浮点型数)
- complex64(复数:32 位实数和虚数)
- complex128(复数:64 位实数和虚数)
其他数字类型:
- byte(字符类型,存储为ascii码,与uint8相同)
- rune(与int32相同)
- uint(32 或 64 位)
- int(与 uint 大小相同)
- uintptr(无符号整型,用于存放一个指针)
字符串类型
表示方式:
- 双引号(" ")
- 反引号(` `)
区别:使用反引号定义的字符串保留原始字符(如换行\n,\t等)会对特殊字符进行转义,打印时候原样输出,而双引号则不转义。
字符串底层是一个byte的数组。
字符串本身是不可变的,因此要改变字符串中的字符,需要将字符串转变为数组,修改数组后再将数组转换为字符串:
func main() {
str := <span style="color: #800000;">"<span style="color: #800000;">hello world<span style="color: #800000;">"<span style="color: #000000;">
s := []<span style="color: #0000ff;">byte<span style="color: #000000;">(str)
s[<span style="color: #800080;">0] = <span style="color: #800000;">'<span style="color: #800000;">W<span style="color: #800000;">'<span style="color: #000000;">
str = <span style="color: #0000ff;">string<span style="color: #000000;">(s)
fmt.Println(str)
}<span style="color: #008000;">//<span style="color: #008000;">结果 Wello world
双引号、反引号区别:
func main() {
<span style="color: #0000ff;">var<span style="color: #000000;"> (
a <span style="color: #0000ff;">string =<span style="color: #000000;">wd\n
b <span style="color: #0000ff;">string = <span style="color: #800000;">"<span style="color: #800000;">age \n<span style="color: #800000;">"<span style="color: #000000;">
)
fmt.Println(a,b)
}
<span style="color: #008000;">//<span style="color: #008000;">结果
wd\n age
派生类型
类型转换
不同的数据类型之间是不允许进行赋值或运算操作,必须经过类型转化才能进行运算或者赋值
转换方法:数据类型()
func main() {
<span style="color: #0000ff;">var a int32 = <span style="color: #800080;">1
<span style="color: #0000ff;">var b int64 = <span style="color: #800080;">64<span style="color: #000000;">
c:= int64(a)+ b <span style="color: #008000;">//<span style="color: #008000;">不转换编译报错
<span style="color: #000000;"> fmt.Println(c)
}
二、运算符
算数运算符
- +相加 :x + y = z
- -相减 : x - y = z
- *相乘:x * y = z
- ++
- --
- ==
- !=
- >
- <
- >=
- <=
- &&
- ||
- !
位运算符
- &&
- ||
- !
位运算符
位运算符对整数在内存中的二进制位进行操作。
- &功能是参与运算的两数各对应的二进位相与。
- |功能是参与运算的两数各对应的二进位相或。
- ^功能是参与运算的两数各对应的二进位相异或,当两对应的二进位相异时,结果为1。
- <<功能把"<<"左边的运算数的各二进位全部左移若干位,由"<<"右边的数指定移动的位数,高位丢弃,低位补0。
- >>"是双目运算符。右移n位就是除以2的n次方。 其功能是把">>"左边的运算数的各二进位全部右移若干位,">>"右边的数指定移动的位数。
B = <span style="color: #800080;">0000 <span style="color: #800080;">1101
-----------------<span style="color: #000000;">
A&B = <span style="color: #800080;">0000 <span style="color: #800080;">1100<span style="color: #000000;">
A|B = <span style="color: #800080;">0011 <span style="color: #800080;">1101<span style="color: #000000;">
A^B = <span style="color: #800080;">0011 <span style="color: #800080;">0001
赋值运算
- =
- +=
- -=
- *=
- /=
- %=
- <<=
- >>=>= 2 等于 C = C >> 2)
- &=
- ^=
- |=
变量运算符
- & 取变量的地址(
&a
将给出变量a
的实际地址) - *取变量的指针(
*a
是指向变量a
的指针)
三、流程控制
if-else
for
一般for循环
死循环(类似python中的while)
使用range遍历数组、slice、map、chan等