http://play.golang.org/p/j-Y0mQzTdP
package main
import "fmt"
type UselessStruct struct {
a int
b int
}
func main() {
mySlice := make([]*UselessStruct, 5)
for i := 0; i != 5; i++ {
mySlice = append(mySlice, &UselessStruct{})
}
fmt.Println(mySlice)
}
Выходы: [<nil> <nil> <nil> <nil> <nil> 0xc010035160 0xc010035170 0xc010035180 0xc010035190 0xc0100351a0]
Что бы я хотел сделать, это предустановленная память для 5 бесполезных конструкций, хранящихся в виде указателей. Если я объявляю кусок структурных значений eq:
mySlice := make([]UselessStruct, 5)
то это создает 5 пустых структур - добавление не заменяет пустые структуры, а скорее продолжает добавление к срезу, поэтому конечный результат с этим кодом:
http://play.golang.org/p/zBYqGVO85h
package main
import "fmt"
type UselessStruct struct {
a int
b int
}
func main() {
mySlice := make([]UselessStruct, 5)
for i := 0; i != 5; i++ {
mySlice = append(mySlice, UselessStruct{})
}
fmt.Println(mySlice)
}
: [{0 0} {0 0} {0 0} {0 0} {0 0} {0 0} {0 0} {0 0} {0 0} {0 0}]
Что такое go-idiomatic способ предварительного выделения и заполнения срезов?