👋
Golang クイズ
クイズ1
以下の出力を答えてください
package main
import "fmt"
type Student struct {
Name string
}
func main() {
arr := []*Student{
{
Name: "student1",
},
{
Name: "student2",
},
{
Name: "student3",
},
}
brr := append(arr, &Student{
Name: "student4",
})
crr := append(arr, &Student{
Name: "student5",
})
for _, v := range brr {
fmt.Println(v)
}
fmt.Println("-----------")
for _, v := range crr {
fmt.Println(v)
}
}
予想通りに
&{student1}
&{student2}
&{student3}
&{student4}
-----------
&{student1}
&{student2}
&{student3}
&{student5}
クイズ2
以下の出力を答えてください
package main
import "fmt"
type Student struct {
Name string
}
func main() {
arr := []*Student{}
arr = append(arr, &Student{
Name: "student1",
})
arr = append(arr, &Student{
Name: "student2",
})
arr = append(arr, &Student{
Name: "student3",
})
brr := append(arr, &Student{
Name: "student4",
})
crr := append(arr, &Student{
Name: "student5",
})
for _, v := range brr {
fmt.Println(v)
}
fmt.Println("-----------")
for _, v := range crr {
fmt.Println(v)
}
}
以下の結果になります
&{student1}
&{student2}
&{student3}
&{student5}
-----------
&{student1}
&{student2}
&{student3}
&{student5}
まとめ
なぜ、クイズ2はクイズ1のような結果が出されていないでしょうか
このクイズ1はunderlying配列の拡張方の理解を問われてます。
クイズ1の場合、スライスarr1のlen=3,cap=3
クイズ2の場合、スライスarr1のlen=3,cap=4
Discussion