
Go语言指针详解及示例
在Go语言中,*号在类型声明中表示指针类型。它与作为取值操作符的*有所不同,在类型声明中,*表示声明的变量是一个指针,指向某个特定数据类型的内存地址。
让我们通过一个例子来理解:
package mainimport "fmt"type Employee struct { Id string Name string Age int}func main() { // 直接创建 Employee 类型的变量 e := Employee{"0", "P1", 33} fmt.Printf("e: %Tn", e) // 输出: e: main.Employee // 使用 new() 函数创建 Employee 指针类型的变量 eNewed := new(Employee) // new() 返回的是一个指针 eNewed.Id = "1" fmt.Printf("eNewed: %Tn", eNewed) // 输出: eNewed: *main.Employee // *int 表示指向 int 类型变量的指针 var intPtr *int var i int = 10 intPtr = &i // & 获取变量的内存地址 fmt.Printf("intPtr: %T, *intPtr: %vn", intPtr, *intPtr) // 输出: intPtr: *int, *intPtr: 10 //*[]int 表示指向 []int (整型切片) 的指针 var slicePtr *[]int var intSlice []int = []int{1,2,3} slicePtr = &intSlice fmt.Printf("slicePtr: %T, *slicePtr: %vn", slicePtr, *slicePtr) // 输出: slicePtr: *[]int, *slicePtr: [1 2 3]}
在这个例子中:
立即学习“go语言免费学习笔记(深入)”;
e 是一个 Employee 类型的变量,它直接存储了 Employee 结构体的数据。eNewed 是一个 *Employee 类型的变量,它是一个指针,存储的是 Employee 结构体数据的内存地址。 new(Employee) 分配了一块内存用于存储 Employee 结构体,并返回指向这块内存的指针。*int 定义了一个指向整数的指针。&i 获取整数变量 i 的内存地址,并将其赋值给 intPtr。 *intPtr 则访问 intPtr 指向的内存地址中的值。*[]int 定义了一个指向整型切片的指针,类似的,*slicePtr 访问 slicePtr 指向的内存地址中的切片数据。
因此,* 在类型声明中表示指针类型,它不是取值操作符,而是类型定义的一部分,指示该变量存储的是内存地址而不是实际数据。 通过指针,我们可以间接操作内存中的数据,实现高效的内存管理和数据共享。
以上就是Go语言中*号在类型声明中代表什么含义?的详细内容,更多请关注创想鸟其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1386024.html
微信扫一扫
支付宝扫一扫


