golang结构体指针的实现

 更新时间:2025年06月23日 10:30:45   作者:longzhoufeng  
这篇文章主要介绍了golang结构体指针的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

1、由于结构体是值类型,在方法传递时希望传递结构体地址,可以使用结构体指针完成,结合new(T)函数创建结构体指针

peo := new(People)
//因为结构体本质是值类型,所以创建结构体指针时已经开辟了内存空间
fmt.Println(peo == nil) //输出:false
//由于结构体中属性并不是指针类型,所以可以直接调用
peo.Name = "jeff"
fmt.Println(peo)//输出:&{jeff 0}
peo1:=peo
peo1.Name="高级语言"
fmt.Println(peo1,peo)//输出:&{高级语言 0} &{高级语言 0}

2、如果不想使用new(T)函数,可以直接声明结构体指针并赋值

//声明结构体指针
var peo *People
//给结构体指针赋值
peo = &People{"jeff", 18}
/*
上面代码使用短变量方式如下
peo:= &People{"jeff", 18}
 */
fmt.Println(peo)

3、结构体指针比较的是地址,*结构体指针取出地址中对应的值

p1 := People{"jeff", 18}
p2 := People{"jeff", 18}
fmt.Printf("%p %p\n", &p1, &p2) //输出地址不同
fmt.Println(p1 == p2)           //输出:true

p3 := new(People)
p3 = &People{"jeff", 17}
//结构体变量不能和指针比较,使用*指针取出地址中值
fmt.Println(p1 == *p3) //输出:true

p4 := &People{"jeff", 17}
//指针比较的是地址
fmt.Println(p3 == p4) //输出:false

到此这篇关于golang结构体指针的实现的文章就介绍到这了,更多相关golang结构体指针内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家! 

相关文章

  • GoLang完整实现快速列表

    GoLang完整实现快速列表

    这篇文章主要介绍了GoLang完整实现快速列表,列表是一种非连续的存储容器,由多个节点组成,节点通过一些 变量 记录彼此之间的关系,列表有多种实现方法,如单链表、双链表等
    2022-12-12
  • go 代码格式化和风格开发者指南

    go 代码格式化和风格开发者指南

    这篇文章主要为大家介绍了go 代码格式化和风格开发者指南,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-09-09
  • Go语言实现自动填写古诗词实例代码

    Go语言实现自动填写古诗词实例代码

    这篇文章主要给大家介绍了关于Go语言实现自动填写古诗词的相关资料,这是最近在项目中遇到的一个需求,文中通过示例代码介绍的非常详细,需要的朋友可以参考借鉴,下面随着小编来一起学习学习吧。
    2018-03-03
  • Go使用Weighted实现资源管理

    Go使用Weighted实现资源管理

    这篇文章主要介绍了Go 语言中的 Weighted 并发原语,包括 Weighted 的基本使用方法、实现原理、使用注意事项等内容,感兴趣的小伙伴可以了解一下
    2023-06-06
  • Go语言使用MySql的方法

    Go语言使用MySql的方法

    这篇文章主要介绍了Go语言使用MySql的方法,实例分析了Go语言操作MySQL的技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-02-02
  • go 闭包case示例代码

    go 闭包case示例代码

    这篇文章解释了Go语言中匿名函数、闭包、立即执行函数表达式(IIFE)和变量作用域的概念,它通过一个示例代码展示了匿名函数如何捕获并修改外部变量,以及如何使用立即执行函数表达式来立即执行这个匿名函数,感兴趣的朋友一起看看吧
    2025-02-02
  • Go程序的init函数在什么时候执行

    Go程序的init函数在什么时候执行

    在Go语言中,init 函数是一个特殊的函数,它用于执行程序的初始化任务,本文主要介绍了Go程序的init函数在什么时候执行,感兴趣的可以了解一下
    2023-10-10
  • go中switch语句的用法详解

    go中switch语句的用法详解

    在Go中的switch语句类似于C、C++、Java、JavaScript和PHP中的switch语句,不同之处在于它只执行匹配的case,因此不需要使用break语句,下面我们就一起来学习一下switch语句的具体使用吧
    2023-09-09
  • golang切片原理详细解析

    golang切片原理详细解析

    这篇文章主要介绍了golang切片原理详细解析,切片在编译时定义为Slice结构体,并通过NewSlice()函数进行创建,更多相关内容感兴趣的小伙伴可以参考一下下面文章内容
    2022-06-06
  • Golang IPv4 字符串与整数互转方式

    Golang IPv4 字符串与整数互转方式

    这篇文章主要介绍了Golang IPv4 字符串与整数互转方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-11-11

最新评论