为什么变量n2返回一个整数而不是切片?
我在 go slices 上做一些练习,遇到了一个场景,其中 slice 变量被强制转换为整数。
package main
import "fmt"
func main() {
var sli []int
numbers := [10]int{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
fmt.Println(sli == nil)
sli = numbers[2:4]
numbers[5] = 100
fmt.Println(sli, len(sli), cap(sli))
news := append(sli, 500, 500)
fmt.Println(news)
fmt.Println(sli)
fmt.Println(numbers)
n2 := copy(sli, news)
fmt.Println(n2)
}
n 变量打印 2 insead of [2] 或任何表明它是 slice 的东西。这是 goplay 地面链接https://play.golang.org/p/2Ym9RLX1eo_8
回答
https://golang.org/pkg/builtin/#copy
Copy 返回复制的元素数,这将是 len(src) 和 len(dst) 中的最小值。
sli = numbers[2:4]- 所以sli长度为 2。