/** * Creating a type "pun" in Go. * To do so you must explicitly use the unsafe package * which is fair since the operation in unsafe!!! * * @author gtowell * Created: Nov 8 2021 */ package main import ( "fmt" "unsafe" ) func main() { dou := 5.0 doup := &dou fmt.Printf("%f\n", *doup) fmt.Printf("FLO64 %p %f\n", doup, *doup) iip := (*int64)(unsafe.Pointer(doup)) fmt.Printf("INT64 %p %d\n", iip, *iip) *iip = 42 fmt.Printf("FLO64 %p %f\n", doup, *doup) fmt.Printf("INT64 %p %d\n", iip, *iip) dou=42.0 fmt.Printf("FLO64 %p %f\n", doup, *doup) fmt.Printf("INT64 %p %d\n", iip, *iip) }