1- と を使用reflect.MakeSlice(reflect.SliceOf(elemType), 0, 10)
して
reflect.Append(elemSlice, reflect.ValueOf(TestStruct{"Testing"}))
、
この作業サンプル コードのように:
package main
import "fmt"
import "reflect"
func main() {
elemType := reflect.TypeOf(TestStruct{})
elemSlice := reflect.MakeSlice(reflect.SliceOf(elemType), 0, 10)
elemSlice = reflect.Append(elemSlice, reflect.ValueOf(TestStruct{"Testing"}))
fmt.Println(elemSlice) // [{Testing}]
}
type TestStruct struct {
TestStr string
}
2-
この作業サンプル コードを使用して、次のようにしますreflect.New(reflect.SliceOf(elemType)).Elem()
。
elemSlice = reflect.Append(elemSlice, reflect.ValueOf(TestStruct{"Testing"}))
package main
import "fmt"
import "reflect"
type TestStruct struct {
TestStr string
}
func main() {
elemType := reflect.TypeOf(TestStruct{})
elemSlice := reflect.New(reflect.SliceOf(elemType)).Elem()
elemSlice = reflect.Append(elemSlice, reflect.ValueOf(TestStruct{"Testing"}))
fmt.Printf("%+v\n", elemSlice) // [{TestStr:Testing}]
fmt.Println(elemSlice) // [{Testing}]
}
出力:
[{TestStr:Testing}]
[{Testing}]
3- が必要な場合append
、唯一の方法はs := elemSlice.([]TestStruct)
、次の作業サンプル コードのよう に を使用することです。
package main
import "fmt"
import "reflect"
type TestStruct struct {
TestStr string
}
func main() {
elemType := reflect.TypeOf(TestStruct{})
elemSlice := reflect.New(reflect.SliceOf(elemType)).Elem().Interface()
s := elemSlice.([]TestStruct)
s = append(s, TestStruct{"Testing"})
fmt.Printf("%+v\n", elemSlice) // []
fmt.Println(s) // [{Testing}]
}