加 Golang学习 QQ群共同学习进步成家立业工作 ^-^ 群号:96933959
变量&常量
变量
变量名由字母、数字、下划线组成,不能以数字开头。
...
var (
A int //默认为0
B string //默认为""
C bool //默认为false
Name string = "suoning"
Age = 18 // 自动识别类型
)
func main() {
sex := "man" //等价于 var sex string = "man"
var girlfriend string //声明变量
girlfriend = "Dawn" //变量赋值
Name := "Nick" //正确
//girlfriend := "Jenny" //错误的!不能申明两次
...
}
常量
常量使用const 修饰,代表永远是只读的,不能修改。
常量中的数据类型只可以是布尔型、数字型(整数型、浮点型和复数)和字符串型。
语法:const identifier [type] = value,其中type可以省略。
iota
iota,特殊常量,可以认为是一个可以被编译器修改的常量。
在每一个const关键字出现时,被重置为0,然后再下一个const出现之前,每出现一次iota,其所代表的数字会自动增加1。
...
const (
A = 'a' //97
B = iota //1
C //2
D = "nick" //"nick" iota += 1
E //"nick" iota += 1
F = 618 //618 iota +=1
G //618 iota +=1
H = iota //7
I //8
)
...
基本数据类型
布尔型
布尔型的值只可以是常量 true 或者 false。
var a bool
var a bool = true
var a = false
数字类型
int:
- 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))
float:
- float32(IEEE-754 32位浮点型数)
- float64(IEEE-754 64位浮点型数)
- complex64(32 位实数和虚数)
- complex128(64 位实数和虚数)
其它:
- byte(类似 uint8)
- rune(类似 int32)
- uint(32 或 64 位)
- int(与 uint 一样大小)
- uintptr(无符号整型,用于存放一个指针)
类型转换
package main
func main() {
var a int
var b int32
var c int64
a = 15
//b = a + a // compiler error
b = int32(a + a) // ok
b = b + 5 // ok: 5 is a constant
c = c + 5 // ok
}
字符类型
存储为ascii码
var a byte = 'a'
fmt.Println(a) //97
字符串类型
字符串表示两种方式:
- 双引号
- `` (反引号,不转义)
string底层就是一个byte的数组
string本身是不可变的,因此要改变string中字符,需要如下操作:
str := "hello world"
s := []byte(str)
s[0] = 'o'
str = string(s)
操作符
算术运算符
- + 相加
- - 相减
- * 相乘
- / 相除
- % 求余
- ++ 自增
- -- 自减
关系运算符
- == 检查两个值是否相等,如果相等返回 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次方。 其功能是把">>"左边的运算数的各二进位全部右移若干位,">>"右边的数指定移动的位数。
赋值运算符
- = 简单的赋值运算符,将一个表达式的值赋给一个左值
- += 相加后再赋值 (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)
&nb