Исходники и презентации
This commit is contained in:
21
lessons/interfaces/interface_internals/main.go
Normal file
21
lessons/interfaces/interface_internals/main.go
Normal file
@ -0,0 +1,21 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"unsafe"
|
||||
)
|
||||
|
||||
type eface struct {
|
||||
typ unsafe.Pointer
|
||||
val unsafe.Pointer
|
||||
}
|
||||
|
||||
func main() {
|
||||
var value int = 100
|
||||
var i interface{} = value
|
||||
fmt.Println("before:", i)
|
||||
|
||||
obj := (*eface)(unsafe.Pointer(&i))
|
||||
*(*int)(obj.val) = 200
|
||||
fmt.Println("after:", i)
|
||||
}
|
||||
Reference in New Issue
Block a user