我开始学习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/

10-15 17:15