Go 高级类型 派生类型 => 指针类型 pointer

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/tongwensenyouxiang/article/details/88416265

现学现卖,如有错误欢迎纠正和讨论

简单来说就是包unsafe提供了下面两条重要的指针相关的功能:

1.unsafe.Pointer是一个指针类型,指向的值不能被解析,只说明这是一个指针,但是指向什么的不知道,任何类型的指针都可以被转换为unsafe.Pointer类型

2.uintptr 是一个整数类型,这个整数的宽度足以用来存储一个指针类型数据,用来计算

动起手来码代码(下面代码可以复制的呦)


	a := uint32(32)
	b := int32(1)
	fmt.Println(&a, &b)
	//然后我要计算
	c := &b
	c = &a
	c = (*int32)(&a)
	fmt.Println(c)

 我使用的工具是GoLand 他给我标红了并提示了一句话:Cannot convert expression of type *uint32 to type *int32

英语不好呀,翻译一下

哦,表达式转换无效,嗯,很明确。

切入正题 引入unsafe.Pointer (下面代码可以复制的呦)

import (
	"fmt"
	_ "unsafe"
)

	a := uint32(32)
	b := int32(1)
	fmt.Println(&a, &b)
	//然后我要计算
	c := &b
	c = (*int32)(unsafe.Pointer(&a))
	fmt.Println(c)

提示报错倒是不见了,嘿嘿嘿。

运行试试

呦,Good boy

猜你喜欢

转载自blog.csdn.net/tongwensenyouxiang/article/details/88416265