Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
32
Task/Address-of-a-variable/Go/address-of-a-variable.go
Normal file
32
Task/Address-of-a-variable/Go/address-of-a-variable.go
Normal file
|
|
@ -0,0 +1,32 @@
|
|||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"unsafe"
|
||||
)
|
||||
|
||||
func main() {
|
||||
myVar := 3.14
|
||||
myPointer := &myVar
|
||||
fmt.Println("Address:", myPointer, &myVar)
|
||||
fmt.Printf("Address: %p %p\n", myPointer, &myVar)
|
||||
|
||||
var addr64 int64
|
||||
var addr32 int32
|
||||
ptr := unsafe.Pointer(myPointer)
|
||||
if unsafe.Sizeof(ptr) <= unsafe.Sizeof(addr64) {
|
||||
addr64 = int64(uintptr(ptr))
|
||||
fmt.Printf("Pointer stored in int64: %#016x\n", addr64)
|
||||
}
|
||||
if unsafe.Sizeof(ptr) <= unsafe.Sizeof(addr32) {
|
||||
// Only runs on architectures where a pointer is <= 32 bits
|
||||
addr32 = int32(uintptr(ptr))
|
||||
fmt.Printf("Pointer stored in int32: %#08x\n", addr32)
|
||||
}
|
||||
addr := uintptr(ptr)
|
||||
fmt.Printf("Pointer stored in uintptr: %#08x\n", addr)
|
||||
|
||||
fmt.Println("value as float:", myVar)
|
||||
i := (*int32)(unsafe.Pointer(&myVar))
|
||||
fmt.Printf("value as int32: %#08x\n", *i)
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue