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

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,723评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,003评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,512评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,825评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,874评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,841评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,812评论 3 416
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,582评论 0 271
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,033评论 1 308
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,309评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,450评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,158评论 5 341
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,789评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,409评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,609评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,440评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,357评论 2 352

推荐阅读更多精彩内容