Unsafe

通过unsafe访问和修改结构体变量
package unsafe

import (
    "fmt"
    "testing"
    "unsafe"
)

func TestUnsafe(t *testing.T) {
    p := &Programmer{Name: "zhaohongfeng", Age: 18}
    name := (*string)(unsafe.Pointer(p))
    fmt.Println(*name)

    age := (*int)(unsafe.Pointer(uintptr(unsafe.Pointer(p)) + unsafe.Offsetof(p.Age)))
    fmt.Println(*age)
}

type Programmer struct {
    Name string
    Age  int
}
获取string结构体,data属性地址
dataPtr = unsafe.StringData(str)
string和byte数组零复制转换
func string2bytes(s string) []byte { 
 return *(*[]byte)(unsafe.Pointer(&s)) 
} 
func bytes2string(b []byte) string{ 
 return *(*string)(unsafe.Pointer(&b)) 
}

results matching ""

    No results matching ""