赋值运算符
概述
赋值运算符就是可以直接进行赋值的一种运算符。
分类
我们列出了Go+中所有的赋值运算符。
运算符 | 描述 | 实例 |
= | 简单的赋值运算符,将一个表达式的值赋给一个左值 | 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 |
var a int = 21 var c int c = a println("c 值为 = ", c) // c 值为 = 21 c += a println("c 值为 = ", c) // c 值为 = 42 c -= a println("c 值为 = ", c) // c 值为 = 21 c *= a println("c 值为 = ", c) // c 值为 = 441 c /= a println("c 值为 = ", c) // c 值为 = 21 c = 200 c <<= 2 println("c 值为 = ", c) // c 值为 = 800 c >>= 2 println("c 值为 = ", c) // c 值为 = 200 c &= 2 println("c 值为 = ", c) // c 值为 = 0 c ^= 2 println("c 值为 = ", c) // c 值为 = 2 c |= 2 println("c 值为 = ", c) // c 值为 = 2 复制代码
声明并赋值运算符
Go+有一种简便的赋值写法,他的语法格式如下:
变量名 := 变量值 复制代码
需要注意的是,他不能在函数外面使用,即不能用来声明全局变量。
a := 100; a +=: 10; println(a) //110 复制代码
字符串
概述
一个字符串就是一个不可以更改的字节序列,字符串可以包含任意的数据,一般用于存储文本。
定义字符串
我们一般使用双引号""
来定义一个字符串,但是要注意,有一些特定的字符是有固定的含义的,我们称为转义字符,这些转义字符包含:
- \n:换行符
- \r:回车符
- \t:tab 键
- \u 或 \U:Unicode 字符
- \:反斜杠自身
println("hello" + "\t" + "world") // hello world 复制代码
如果我们想要知道这个字符串所占的字节长度,我们可以使用Go+的内置函数来计算。
println(len("helloword")) // 9 复制代码
如果我们要定义一个字符串的语法如下:
str := "helloword" println(str) // helloword println(len(str)) // 9 复制代码
字符串拼接
我们可以通过+
实现两个字符串的拼接,将后面的字符串追加到前面字符串的后面。
str := "hello" + "word" println(str) // helloword str1 := "my name is \t" str2 := "zs" println(str1 + str2) // my name is zs 复制代码
定义多行字符串
如果我们想要定义多行的字符串,Go+也是支持的。使用传统的""
是不能跨行的,我们如果想要定义一个多行的字符串,可以使用反引号:`。
const str = `第一行 第二行 第三行 ` println(str) 复制代码
在所有反引号之间的代码不会被编译器识别,只是作为字符串的一部分。
切片
概述
切片是程序员对数组对象的抽象,在Go+里面,数组长度是不可变的,这样会造成我们使用集合的时候比较笨重,只有在固定的场所才可以使用。
Go+提供了一种较为灵活的数组,我们可以理解为动态数组,他对比数组来说长度是不固定的,同时可以追加元素,在追加元素的时候,可以动态扩容,他就是切片。
定义切片
定义切片和定义变量一样,语法如下:
var 变量名 []切片类型 var age []int 复制代码
切片是不需要声明长度的,我们也可以使用内置函数——make()
来定义切面。
var 变量名 []切片类型 = make([]类型, 长度) var age []int = make([]int,10) 复制代码
当然也可以简写。
变量名 := make([]类型, 长度) age := make([]int,10) 复制代码
这里的长度就是我们给这个切片赋值的初始长度。
切片初始化
定义完了切片,我们要开始对我们定义的切片进行初始化操作了。初始化切片的语法如下:
切片名 := [] 切片类型 {初始化的值} num :=[] int {1,2,3,4,5} 复制代码
这种方式最简单粗暴,直接初始化切片,这样我们就初始化了一个切片,切片里面有1,2,3,4,5这些值,切片的长度为5。
切片的两种内置函数
len()
len()
函数表示切片的长度,我们可以直接使用这个函数去获取这个切片的长度。
num :=[] int {1,2,3,4,5} len(num) //5 复制代码
cap()
有了长度以后,我们在实际开发中可能还需要查看当前切片的容量大小,我们可以使用cap()
函数来进行查看。
num :=[] int {1,2,3,4,5} cap(num) //5 复制代码
切片截取
我们日常中还会使用的一个就是切片的截取,我们可以设置索引的方式来动态截取切片。
num :=[] int {1,2,3,4,5} println("这是原始的切片",num) // 这是原始的切片 [1 2 3 4 5] println("这是截取后的切片",num[0:2]) // 这是截取后的切片 [1 2] 复制代码
我们直接在切片后使用[开始的索引,结束的索引]
,即可动态截取切片,注意这个是含头不含尾,也就是意味着我们截取出来的只是包含起始值,但是不包含结束值。