一、数据类型
布尔型
布尔类型 - 由两个预定义常量组成:true、
false,默认值为false
package main import "fmt" func main() { var ( a bool //默认值为false b bool = true ) 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的数组。
字符串本身是不可变的,因此要改变字符串中的字符,需要将字符串转变为数组,修改数组后再将数组转换为字符串:
package main import "fmt" func main() { str := "hello world" s := []byte(str) s[0] = 'W' str = string(s) fmt.Println(str) }//结果 Wello world
双引号、反引号区别:
package main import "fmt" func main() { var ( a string =`wd\n` b string = "age \n" ) fmt.Println(a,b) } //结果 wd\n age
派生类型
- 指针类型
- 数组类型
- 结构类型
- 联合类型
- 函数类型
- 切片类型
- 函数类型
- 接口类型
类型转换
不同的数据类型之间是不允许进行赋值或运算操作,必须经过类型转化才能进行运算或者赋值
转换方法:数据类型()
package main import "fmt" func main() { var a int32 = 1 var b int64 = 64 c:= int64(a)+ b //不转换编译报错 fmt.Println(c) }
二、运算符
算数运算符
- +相加 :x + y = z
- -相减 : x - y = z
- *相乘:x * y = z
- % 求余: x % y =z
- ++ 自增 :x++
- -- 自减:x--
关系运算符
- == 判断两个值是否相等,如果相等返回 True 否则返回 False。
- != 判断两个值是否不相等,如果不相等返回 True 否则返回 False。
- > 判断左边值是否大于右边值,如果是返回 True 否则返回 False。
- < 判断左边值是否小于右边值,如果是返回 True 否则返回 False。
- >= 判断左边值是否大于等于右边值,如果是返回 True 否则返回 False。
- <= 判断左边值是否小于等于右边值,如果是返回 True 否则返回 False。
逻辑运算符
- && 逻辑 AND 运算符。 如果两边的操作数都是 True,则条件 True,否则为 False。
- || 逻辑 OR 运算符。 如果两边的操作数有一个 True,则条件 True,否则为 False。
- ! 逻辑 NOT 运算符。 如果条件为 True,则逻辑 NOT 条件 False,否则为 True。
位运算符
位运算符对整数在内存中的二进制位进行操作。
- & 按位与运算符"&"是双目运算符。 其功能是参与运算的两数各对应的二进位相与。
- | 按位或运算符"|"是双目运算符。 其功能是参与运算的两数各对应的二进位相或。
- ^ 按位异或运算符"^"是双目运算符。 其功能是参与运算的两数各对应的二进位相异或,当两对应的二进位相异时,结果为1。
- << 左移运算符"<<"是双目运算符。左移n位就是乘以2的n次方。 其功能把"<<"左边的运算数的各二进位全部左移若干位,由"<<"右边的数指定移动的位数,高位丢弃,低位补0。
- >> 右移运算符">>"是双目运算符。右移n位就是除以2的n次方。 其功能是把">>"左边的运算数的各二进位全部右移若干位,">>"右边的数指定移动的位数。
//假设A = 60, B = 13; 二进制格式表示 A = 0011 1100 B = 0000 1101 ----------------- A&B = 0000 1100 A|B = 0011 1101 A^B = 0011 0001
赋值运算
- = 简单的赋值运算符,将一个表达式的值赋给一个左值
- += 相加后再赋值 (C += A 等于 C = C + A)
- -= 相减后再赋值 (C -= A 等于 C = C - A)
- *= 相乘后再赋值 (C *= A 等于 C = C * A)
- /= 相除后再赋值 (C /= A 等于 C = C / A)
- %= 求余后再赋值 (C %= A 等于 C = C % A)
- <<= 左移后赋值 (C <<= 2 等于 C = C << 2)
- >>= 右移后赋值 (C >>= 2 等于 C = C >> 2)
- &= 按位与后赋值 (C &= 2 等于 C = C & 2)
- ^= 按位异或后赋值 (C ^= 2 等于 C = C ^ 2)
- |= 按位或后赋值 (C |= 2 等于 C = C | 2)
变量运算符
- &