算数运算符
注意: ++(自增)和–(自减)在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" ) )
}