Tôi đang viết một hàm tổng quát nhận được bất kỳ loại cấu trúc và kích thước trả về nào của cấu trúc đó, tương tự như sizeof chức năng bằng ngôn ngữ C.chức năng chung để lấy kích thước của bất kỳ cấu trúc nào trong golang
Tôi đang cố gắng thực hiện việc này bằng cách sử dụng giao diện và phản chiếu nhưng tôi không thể nhận được kết quả chính xác. Mã bên dưới
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)
}
Mã này trả về kết quả sai là 12. Tôi rất mới để golang, vui lòng giúp tôi về điều này.
cảm ơn. Nó hoạt động tốt – sujin
Ngoài ra, bạn có thể sử dụng 'unsafe.Sizeof (myType {})'. – thwd
@thwd Bạn nói đúng nhưng hàm getSize của tôi phải tìm kích thước của bất kỳ cấu trúc nào, nó phải tìm loại cấu trúc trong suốt thời gian chạy. Bởi vì điều đó tôi đã chọn phản ánh gói – sujin