slice1 := []int{1, 2, 3, 4, 5}
slice2 := []int{7, 8, 9}
copy(slice2, slice1) //只会将slice1的前3个元素赋值给slice2
fmt.Println(slice2)
slice3 := []int{1, 2, 3, 4, 5}
slice4 := []int{7, 8, 9}
copy(slice3, slice4) //将slice4的元素赋值slice3的前3个元素
fmt.Println(slice3)
打印结果:
[1 2 3]
[7 8 9 4 5]
9 作为函数参数时切片与数组的区别
func SetValueByArray(arr [5]int) {
arr[0] = 100
}
func SetValueBySlice(slice []int) {
slice[0] = 100
}
func main() {
arr := [5]int{1, 2, 3, 4, 5}
SetValueByArray(arr)
fmt.Println(arr)
slice := arr[:]
SetValueBySlice(slice)
fmt.Println(arr)
}
//打印结果:
[1 2 3 4 5]
[100 2 3 4 5]
10字符串和byte切片
标准库中提供了4个与字符串操作相关的包:
包
功能
strings
提供了字符串查询、替换、比较、截断、拆分和合并等功能。
bytes
提供了很多与strings包类似的功能。因为字符串是只读的,逐步构建字符串会导致很多分配和复制,这种情况下,使用bytes.Buffer类型将会更有效。
strconv
提供了布尔类型、整数、浮点数和对应字符串的相互转换,还提供了双引号转义相关的转换。
unicode