Piszę ogólną funkcję, która ma dowolny typ struktury i wielkość zwrotu tej struktury, podobną do sizeof funkcji w języku C.Ogólna funkcja, aby uzyskać rozmiar dowolnej struktury w golang
Próbuję zrobić to za pomocą interfejsu i refleksji, ale nie jestem w stanie uzyskać prawidłowego wyniku. Kod jest poniżej
package main
import (
"fmt"
"reflect"
"unsafe"
)
func main() {
type myType struct {
a int
b int64
c float32
d float64
e float64
}
info := myType{1, 2, 3.0, 4.0, 5.0}
getSize(info)
}
func getSize(T interface{}) {
v := reflect.ValueOf(T)
const size = unsafe.Sizeof(v)
fmt.Println(size)
}
Ten kod zwraca błędny wynik jako 12. Jestem bardzo nowy w golangu, proszę mi pomóc w tej sprawie.
dzięki. Udało się dobrze – sujin
Alternatywnie możesz użyć 'unsafe.Sizeof (myType {})'. – thwd
@thwd Masz rację, ale moja funkcja getSize musi znaleźć rozmiar dowolnej struktury, musi znaleźć typ struktury podczas działania. Z tego powodu wybrałem pakiet odzwierciedlający – sujin