2022-10-28:以下go语言代码输出什么?A:false false;B:true false;C:true true;D:false true。
代码语言:go复制package main
import "fmt"
func main() {
s := []string{"A", "B", "C"}
t := s[:1]
fmt.Println(&s[0] == &t[0])
u := append(s[:1], s[2:]...)
fmt.Println(&s[0] == &u[0])
}
答案选C。这里的关键点是 append(s:1, s2:...) 会不会导致扩容。s:1 相当于 s:1:3,即容量是也是 3,因此 append 一个元素(s2:...)并不会导致扩容,因此第一个元素还是原来 s0 的元素。