-1
以下のコードでは、なぜ両方ともfmt.Println(len(people))
印刷0
ですか? ここで指摘したように、https://stackoverflow.com/a/2441112/315445など、スライスは参照型です。発信者(メイン)が更新されたデータを見ないのはなぜですか?発信者が新しいデータをスライスで見ないのはなぜですか?
package main
import "fmt"
type Person struct {
name string
age string
}
func main() {
var people = make([]Person, 0)
fmt.Println(len(people))
getList(people)
fmt.Println(len(people))
}
func getList(people []Person) {
people = append(people, Person {"Foo", "1"})
people = append(people, Person {"Bar", "2"})
}
しかし、これは機能します。だから実際にはないpass-by-reference
?
package main
import "fmt"
type Person struct {
name string
age string
}
func main() {
var people = make([]Person, 0)
fmt.Println(len(people))
people = getList(people)
fmt.Println(len(people))
}
func getList(people []Person) []Person {
people = append(people, Person {"Foo", "1"})
people = append(people, Person {"Bar", "2"})
return people
}