使用unsafe.Pointer將結構體轉為[]byte



package main


import (
    "fmt"
    "unsafe"
)

type TestStructTobytes struct {
    data int64
    s    int8
}
type SliceMock struct {
    addr uintptr
    len  int
    cap  int
}

func main() {
    var testStruct = &TestStructTobytes{100, 'a'}
    Len := unsafe.Sizeof(*testStruct)
    testBytes := &SliceMock{
        addr: uintptr(unsafe.Pointer(testStruct)), //使用unsafe.Pointer作為橋梁使*轉為uintptr符合[]byte的底層數據結構
        cap:  int(Len),
        len:  int(Len),
    }
    data := *(*[]byte)(unsafe.Pointer(testBytes)) //想將結構體轉為[]byte需要結構體和byte有一樣的數據結構SliceMock做到了這點
    fmt.Println("[]byte is : ", data)
}





免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM