Go语法基础-运算符、数值和字符串

运算符

运算符用于在程序运行时执行数学或逻辑运算。

Go 语言内置的运算符有:

算术运算符
关系运算符
逻辑运算符
位运算符
赋值运算符
其他运算符
接下来让我们来详细看看各个运算符的介绍。

算数运算符

语法 描述/结果
+x x
-x x的负值
x++ 为x加上一个无类型的常量1
x-- 为x减去一个无类型的常量1
x += y 将x加上y
x -= y 将x减去y
x *= y 将x乘以y
x /= y 将x除以y,如果这些数字都是整数那么任何余数都会被丢弃,除以0会导致运行时异常
x + y x与y的和
x - y x减去y的结果
x * y x乘以y的结果
x / y x除以y的结果,如果这些数字都是整数那么任何余数都会被丢弃,除以0会导致运行时异常

关系运算符

运算符 描述 实例
== 检查两个值是否相等,如果相等返回 True 否则返回 False。 (A == B) 为 False
!= 检查两个值是否不相等,如果不相等返回 True 否则返回 False。 (A != B) 为 True
> 检查左边值是否大于右边值,如果是返回 True 否则返回 False。 (A > B) 为 False
< 检查左边值是否小于右边值,如果是返回 True 否则返回 False。 (A < B) 为 True
>= 检查左边值是否大于等于右边值,如果是返回 True 否则返回 False。 (A >= B) 为 False
<= 检查左边值是否小于等于右边值,如果是返回 True 否则返回 False。 (A <= B) 为 True

逻辑运算符

下表列出了所有Go语言的逻辑运算符。假定 A 值为 True,B 值为 False。

运算符 描述 实例
&& 逻辑 AND 运算符。 如果两边的操作数都是 True,则条件 True,否则为 False。 (A && B) 为 False
|| 逻辑 OR 运算符。 如果两边的操作数有一个 True,则条件 True,否则为 False。 (A || B) 为 True
! 逻辑 NOT 运算符。 如果条件为 True,则逻辑 NOT 条件 False,否则为 True。 !(A && B) 为 True

数值类型

Go语言提供了大量内置的数值类型,标准库也提供了big.Int类型的整数和big.Rat类型的有理数,这些都是大小不限的(只限于机器的内存)。

整型

Go语言提供了11种整型,包括5种有符号的和5种无符号的,再加上1种用于存储指针的整型类型。

类型 取值范围
byte 等同于uint8
int 依赖不同平台下的实现,可以是int32或者int64
int8 [-128, 127]
int16 [-32 768, 32 767]
int32 [-2 147 483 648, 2 147 483 647]
int64 [-9 223 372 036 854 775 808, 9 223 372 036 854 775 807]
rune 等同于uint32
uint 依赖不同平台下的实现,可以是uint32或者uint64
uint8 [0, 255]
uint16 [0, 65 535]
uint32 [0, 4 294 967 295]
uint64 [0, 18 446 744 073 709 551 615]
uintptr 一个可以恰好容纳指针值的无符号整数类型(对32位平台是uint32,对64位平台是uint64)

浮点类型

Go语言提供了两种类型的浮点类型和两种类型的复数类型:

类型 范围
float32
float64
complex64 实数和虚数都是一个float32
complex128 实数和虚数都是一个float64

math

语法 含义/结果
math.Abs(x) |x|,即x的绝对值
math.Acos(x) 以弧度为单位的x的反余弦值
math.Acosh(x) 以弧度为单位的x的反双曲余弦值
math.Asin(x) 以弧度为单位的x的反正弦值
math.Asinh(x) 以弧度为单位的x的反双正弦值
math.Atan(x) 以弧度为单位的x的反余切值
math.Atan2(y, x) 坐标系x正方向与射线(x,y)构成的角度的反正切值
math.Atanh(x) 以弧度为单位的x的反双曲正切值
math.Cbrt(x)
math.Ceil(x)
math.Copysign(x, y) 得到一个值,其绝对值与x相同,但符号与y相同
math.Cos(x) 以弧度为单位的x的余弦值
math.Cosh(x) 以弧度为单位的x的双曲余弦值
math.Dim(x) 等价于math.Max(x-y, 0.0)
math.E 自然数e;值大约是2.718 281 828 459 045
math.Erf(x) erf(x),即x的高斯误差函数
math.Erfc(x) erfc(x),即x的互补高斯误差函数
math.Exp(x)
math.Exp2(x)
math.Expm1(x)
math.Float32bits(f)
math.Float32frombits(u)
math.Float64bits(x)
math.Float64frombits(u)
math.Floor(x)

字符串

字符串操作符

语法 描述/结果
s += t 将字符串t追加到字符串s末尾
s + t 将字符串s和t级联
s[n] 字符串s中索引位置为n(uint8类型)处的原始字符串
s[n:m] 从位置n到位置m-1处取得的字符串
s[n:] 从位置n到位置len(s)-1处取得的字符串
s[:m] 从索引位置0的位置到m-1处取得的字符串
len(s) 字符串s中的字节数
len([]rune(s) 字符串s中的字符的个数——可以使用更快的utf8.RuneCountInString()来替代
[]rune(s) 将字符串s转换成一个Unicode码点
string(chars) 将一个[]rune或者[]int32转换成字符串,这里假设rune和int32切片都是Unicode码点
[]byte(s) 无副本地将[]byte或者[]uint8转换成一个字符串类型,不保证转换的字节是合法的UTF-8编码字节
string(bytes) 无副本地将[]byte或者[]uint8转换成一个字符串类型,不保证转换的字节码是合法的UTF-8编码字节
string(i) 将任意数字类型的i转换成字符串,假设i是一个Unicode码点。例如,如果i是65,那么其返还值为“A”
strconv.Itoa(i) int类型i的字符串表示和一个错误值。例如,如果i的值是65,那么该返回值为("65", nil).
fmt.Sprint(x) 任意类型x的字符串表示,例如,如果x是一个值为65的数字类型,那么其返回值为"65"

比较字符串

Go语言字符串支持常规的比较操作(<、<=、==、!=、>和>=),这些操作符在内存中一个字节一个字节地比较字符串。

你可能感兴趣的:(Go语法基础-运算符、数值和字符串)