GoLang之切片 *** 作注意事项

GoLang之切片 *** 作注意事项,第1张

文章目录
  • GoLang之切片 *** 作注意事项
    • 1.错误在切片中插入元素
    • 2.正确在切片中插入元素
    • 3.正确在尾部插入元素
    • 4.切片传递
    • 5.切片错误传递1
    • 6.切片错误传递2
    • 7.切片错误传递3
    • 8.切片错误传递4
    • 9.结构体传递

GoLang之切片 *** 作注意事项 1.错误在切片中插入元素
result := [][]int{{7, 0}, {7, 1}, {6, 1}}
	info := []int{5, 0}
	m := result[info[1]:]
	result = result[0:info[1]]
	result = append(result, info)
	result = append(result, m...)
	fmt.Println(result)//输出:[[5 0] [5 0] [7 1] [6 1]]

在这里时m切片的第一个发生了变化,因为他们共用的都是一个底层数组,底层数组的第一个元素发生了变化

2.正确在切片中插入元素
func main() {
	result := []int{1, 2, 3, 4}
	result = append(result, 0) //随便添加个数字用于扩展一个空间
	copy(result[2:], result[1:])
	fmt.Println(result) //输出[1 2 2 3 4]

	result[1] = 10000
	fmt.Println(result)//输出[1 10000 2 3 4]

}
3.正确在尾部插入元素
func main() {
	var a [][]int
	var b []int
	b = []int{2, 3}
	a = append(a, b)
	fmt.Println(a) //输出[[2 3]]
	b = []int{555, 665}
	a = append(a, b)
	fmt.Println(a) //输出[[2 3] [555 665]]
}
var a [][]int
var b []int
func main() {
	b = []int{2, 3}
	a = append(a, b)
	fmt.Println(a) //输出[[2 3]]
	b = []int{555, 665}// []int{555, 665} 这一句已经给b分配了一个新的切片了
	a = append(a, b)
	fmt.Println(a) //输出[[2 3] [555 665]]
}
var a [][]int
var b []int
func main() {
	b = []int{2, 3}
	a = append(a, b)
	fmt.Println(a) //输出[[2 3]]
	b[0] = 5
	fmt.Println(a) //输出[[5 3]]
}
func main() {
	b = []int{2, 3}
	a = append(a, b)
	fmt.Println(a) //输出[[2 3]]
	b = append(b, 100)
	fmt.Println(a) //输出[[2 3]]
}

4.切片传递

5.切片错误传递1

6.切片错误传递2

7.切片错误传递3

8.切片错误传递4

9.结构体传递

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/871604.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-13
下一篇 2022-05-13

发表评论

登录后才能评论

评论列表(0条)

保存