Go
golang

むりやり型変換

More than 1 year has passed since last update.

何らかの事情で全く異なる型の間の変換をする方法です。

unsafe です。

package main

import (
    "fmt"
    "unsafe"
)

func main() {
    aa := []bool{true, false, true}

    //bb := ([]int8)(aa)
    //cannot convert aa (type []bool) to type []int8

    bb := *(*[]int8)(unsafe.Pointer(&aa))

    fmt.Printf("aa=%#v, bb=%#v\n", aa, bb) //aa=[]bool{true, false, true}, bb=[]int8{1, 0, 1}
}

https://play.golang.org/p/106qikGMB6

普通は使うものではありませんが、参考までに。