
算数运算符
运算符 |
描述 |
+ |
相加 |
- |
相减 |
* |
相乘 |
/ |
相除 |
% |
求余 |
注意: ++(自增)和–(自减)在Go语言中是单独的语句,并不是运算符。
关系运算符
运算符 |
描述 |
== |
检查两个值是否相等,如果相等返回 True 否则返回 False。 |
!= |
检查两个值是否不相等,如果不相等返回 True 否则返回 False。 |
> |
检查左边值是否大于右边值,如果是返回 True 否则返回 False。 |
>= |
检查左边值是否大于等于右边值,如果是返回 True 否则返回 False。 |
< |
检查左边值是否小于右边值,如果是返回 True 否则返回 False。 |
<= |
检查左边值是否小于等于右边值,如果是返回 True 否则返回 False。 |
逻辑运算符
运算符 |
描述 |
&& |
逻辑 AND 运算符。 如果两边的操作数都是 True,则为 True,否则为 False。 |
ll |
逻辑 OR 运算符。 如果两边的操作数有一个 True,则为 True,否则为 False。 |
! |
逻辑 NOT 运算符。 如果条件为 True,则为 False,否则为 True。 |
位运算符
位运算符对整数在内存中的二进制位进行操作。
运算符 |
描述 |
& |
参与运算的两数各对应的二进位相与。(两位均为1才为1) |
l |
参与运算的两数各对应的二进位相或。(两位有一个为1就为1) |
^ |
参与运算的两数各对应的二进位相异或,当两对应的二进位相异时,结果为1。(两位不一样则为1) |
<< |
左移n位就是乘以2的n次方。“a<<b”是把a的各二进位全部左移b位,高位丢弃,低位补0。 |
>> |
右移n位就是除以2的n次方。“a>>b”是把a的各二进位全部右移b位。 |
赋值运算符
运算符 |
描述 |
实例 |
= |
简单的赋值运算符,将一个表达式的值赋给一个左值 |
C = A + B 将 A + B 表达式结果赋值给 C |
+= |
相加后再赋值 |
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 |
字符串转义符
Go 语言的字符串常见转义符包含回车、换行、单双引号、制表符等,如下表所示。
转义 |
含义 |
\r |
回车符(返回行首) |
\n |
换行符(直接跳到下一行的同列位置) |
\t |
制表符 |
’ |
单引号 |
" |
双引号 |
\ |
反斜杠 |
字符串
字符串就是一串固定长度的字符连接起来的字符序列。字符串一旦赋值了,字符串就不能修改了:在 Go 中字符串是不可变的。
Go语言中要定义一个多行字符串时,就必须使用反引号字符:
package main
import "fmt"
func main() {
a := `abc
def
ghi`
fmt.Println(a)
}

要修改字符串,需要先将其转换成[]rune或[]byte,完成后再转换为string。无论哪种转换,都会重新分配内存,并复制字节数组。
package main
import (
"fmt"
)
func main() {
s1 := "hello"
byteS1 := []byte(s1)
byteS1[0] = 'H'
s1 = string(byteS1)
fmt.Println(s1)
s2 := "博客"
runeS2 := []rune(s2)
runeS2[0] = '狗'
s2 = string(runeS2)
fmt.Println(s2)
}

字符串的常用操作
方法 |
介绍 |
len(str) |
求长度 |
+或fmt.Sprintf |
拼接字符串 |
strings.Split |
分割 |
strings.Contains |
判断是否包含 |
strings.HasPrefix,strings.HasSuffix |
前缀/后缀判断 |
strings.Index(),strings.LastIndex() |
子串出现的位置 |
strings.Join(a[]string, sep string) |
join操作 |
package main
import (
"fmt"
"strings"
)
func main() {
a := "你好 go语言"
fmt.Println(len(a))
fmt.Println(strings.Contains(a, "g"))
}
