#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