我正在浏览切片技巧文档,看到一些单线弹出和弹出前面。例如,这两个工作正常:
// pop
s := []int{1, 2, 3}
last, s := s[len(s)-1], s[:len(s)-1]
fmt.Println(last, s) // Prints 3 [1 2]
// pop front
s := []int{1, 2, 3}
first, s := s[0], s[1:]
fmt.Println(first, s) // Prints 1 [2 3]
但是如果我尝试做这样的事情来弹出第二个元素:
s := []int{1, 2, 3}
second, s := s[1], append(s[0:1], s[2:]...)
fmt.Println(second, s) // Prints 3 [1 3]
它弹出第二个元素,但second变量指向新切片中的第二个元素。为什么在这种情况下会发生这种情况,而前两个情况却没有?为了工作,我必须使用单独的行:
s := []int{1, 2, 3}
second := s[1]
s = append(s[0:1], s[2:]...)
fmt.Println(second, s) // Prints 2 [1 3]
慕森卡
相关分类