一个函数传参一个 slice,先 append 再赋值和另一个函数先赋值再append,哪个会发生变化?

题目来源:字节跳动

答案:

  1. package main
  2. import "fmt"
  3. func BeforeAppend(s []int) []int {
  4. s = append(s, 1)
  5. s = []int{1, 2, 3}
  6. return s
  7. }
  8. func AfterAppend(s []int) []int {
  9. s = []int{1, 2, 3}
  10. s = append(s, 1)
  11. return s
  12. }
  13. func main() {
  14. s := make([]int, 0)
  15. fmt.Println(BeforeAppend(s))
  16. fmt.Println(AfterAppend(s))
  17. }