我开始学习golang,但是遇到了我希望这是一个简单的问题。
我有一个用几种结构用C编写的文件。即myStruct的
现在,我想从该文件中读取一个数据结构。
在C语言中,我简单地打开一个文件并移动结构* sizeofStruct的fileptr数。像这样
int sizeofStruct = sizeof(myStruct)
seek(filehandle, searchNo*sizeofStruct)
read(filehandle, &data, sizeofStruct)
在Golang中,这似乎不像“sizeof”那么简单...而是以uintptr结尾的多次转换...诸如此类,或者reflect.int32()
var spect Spectrum // struct Spectrum
const SizeOfSpectrum = unsafe.Sizeof(spect)
我希望SizeOfSpectrum在C中等于
sizeof(spect)
你们可以帮我获取int变量中的结构大小吗?
最佳答案
我有一个用几种结构用C编写的文件。即myStruct的Now
我想从该文件读取一个数据结构。在C我简单地打开一个
文件并移动结构的fileptr数* sizeofStruct。
我还没有找到一种方法来获取数值并乘以
另一个,说int16值。目的是在
文件。
您在Go中使用显式转换执行相同的操作。
例如,
package main
import (
"fmt"
"unsafe"
)
func main() {
type S struct{ F int32 }
i16 := int16(42)
// The Go Programming Language Specification
// https://golang.org/ref/spec
// Numeric types
// Explicit conversions are required when different
// numeric types are mixed in an expression or assignment.
// func (f *File) Seek(offset int64, whence int) (ret int64, err error)
offset := int64(i16) * int64(unsafe.Sizeof(S{}))
fmt.Println(offset)
}
游乐场:https://play.golang.org/p/YFyU11Lf2qc
输出:
168
关于go - Golang如何将struct的sizeof提取为int,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54869836/