В чем разница между [1] int{} и [] int{0}

#go

#Вперед

Вопрос:

Я пытаюсь array изменить в другом func , а затем вернуть измененное. Итак, я написал пример кода ниже, мой вопрос заключается в том, почему изменения в changeArr02 функции могут повлиять на источник, arr а changeArr01 нет.

 package main

import "fmt"

func changeArr01(arr [1]int) {
        arr[0] = -100
}

func changeArr02(arr []int) {
        arr[0] = -200
}

func main() {
        arr01 := [1]int{}
        changeArr01(arr01)
        fmt.Println(arr01) // 0

        arr02 := []int{0}
        changeArr02(arr02)
        fmt.Println(arr02) // -200
}
  

Комментарии:

1. Один — это массив, другой — фрагмент. Ответы на большинство основных вопросов даны в рамках экскурсии по Go , которая займет всего несколько минут.

Ответ №1:

  arr01 := [1]int{}
  

представляет собой массив целых чисел размером 1

  arr02 := []int{0}
  

это фрагмент целых чисел с одним целым числом внутри (0)

подробнее объясняется здесь:https://tour.golang.org/moretypes/7