Golang struct 结构体指针类型 / 结构体值类型

这篇具有很好参考价值的文章主要介绍了Golang struct 结构体指针类型 / 结构体值类型。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

struct类型的内存分配机制


Golang struct 结构体指针类型 / 结构体值类型,Go  面向对象编程结构体 struct,golang

结构体变量之间的赋值是值拷贝。

Golang struct 结构体指针类型 / 结构体值类型,Go  面向对象编程结构体 struct,golang

Golang struct 结构体指针类型 / 结构体值类型,Go  面向对象编程结构体 struct,golang

Golang struct 结构体指针类型 / 结构体值类型,Go  面向对象编程结构体 struct,golang

type stu struct {
	Name  string
	Slice []string
	Map1  map[string]string
}

func main() {
	s := stu{}
	s.Slice = make([]string, 6)
	s.Slice[1] = "ssss"
	s.Slice[2] = "xxxx"
	s.Map1 = make(map[string]string, 5)
	s.Map1["name"] = "lucas"
	fmt.Printf("%#v", s)

	s1 := &s
	fmt.Printf("s的地址=%p\n", &s)
	fmt.Printf("s1的地址=%p,s1的值%p", &s1, s1)

}



main.stu{Name:"", Slice:[]string{"", "ssss", "xxxx", "", "", ""}, Map1:map[string]string{"name":"lucas"}}
s的地址=0x1400010e180
s1的地址=0x1400011c020,s1的值0x1400010e180

Golang struct 结构体指针类型 / 结构体值类型,Go  面向对象编程结构体 struct,golang

当需要通过变量去修改另外一个结构体内容的时候,可以通过传递地址的方式来达到这个效果。

Golang struct 结构体指针类型 / 结构体值类型,Go  面向对象编程结构体 struct,golang

这样使用肯定是不对的,因为.的运算优先级要高,所以先会去执行p2.age,之后又取地址,所以这个就不行。

在代码执行的时候先执行.的操作,然后再执行*的操作。已经p.age取出具体的值了,那么对具体的值做*号处理肯定是错误的。

Golang struct 结构体指针类型 / 结构体值类型,Go  面向对象编程结构体 struct,golang文章来源地址https://www.toymoban.com/news/detail-640168.html

到了这里,关于Golang struct 结构体指针类型 / 结构体值类型的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • go 结构体 - 值类型、引用类型 - 结构体转json类型 - 指针类型的种类 - 结构体方法 - 继承 - 多态(interface接口) - 练习

    go 结构体 - 值类型、引用类型 - 结构体转json类型 - 指针类型的种类 - 结构体方法 - 继承 - 多态(interface接口) - 练习

    目录 一、结构体 1、python 与 go面向对象的实现: 2、初用GO中的结构体:(实例化一个值类型的数据(结构体)) 输出结果不同的三种方式  3、实例化一个引用类型的数据(结构体) 4、引用类型(指针类型) vs 值类型(两者的区别) 引用类型(指针类型) - 值类型内存拓扑图:

    2024年02月14日
    浏览(18)
  • 【Golang】Golang进阶系列教程--为什么 Go 语言 struct 要使用 tags

    【Golang】Golang进阶系列教程--为什么 Go 语言 struct 要使用 tags

    在 Go 语言中,struct 是一种常见的数据类型,它可以用来表示复杂的数据结构。在 struct 中,我们可以定义多个字段,每个字段可以有不同的类型和名称。 除了这些基本信息之外,Go 还提供了 struct tags,它可以用来指定 struct 中每个字段的元信息。 在本文中,我们将探讨为什

    2024年02月15日
    浏览(19)
  • Golang空结构体struct{}的作用?

    在平时做项目得时候,经常会看到很多包里面定义了结构体。 e.g. 在 context 包里面 Context 接口中的 Done() 方法, Done() 返回一个是以空结构体定义数据的通道 chan struct{} ,那这里他是有什么特殊用意吗?我们接下来分析 struct{} 的作用。 struct{} 空结构是没有字段的结构类型。下

    2024年02月11日
    浏览(8)
  • golang 结构体struct转map实践

    golang 结构体struct转map实践

      1、反射 type sign struct {     Name string `json:\\\"name,omitempty\\\"`     Age  int    `json:\\\"age,omitempty\\\"` }   var s sign s.Name = \\\"csdn\\\" s.Age = 18     //方式1 反射 var data = make(map[string]interface{})   t := reflect.TypeOf(s) v := reflect.ValueOf(s) for i := 0; i t.NumField(); i++ {     data[t.Field(i).Name] = v.Field(i).Interfa

    2024年02月12日
    浏览(10)
  • Golang空结构体struct{}的作用是什么?

    Golang空结构体struct{}的作用是什么?

    在Go语言中,空结构体 struct{}是一种特殊的数据类型,它不占用任何内存空间。空结构体没有任何字段,也没有任何方法。尽管它看起来没有实际的用途,但在编程中确实有一些常见的应用场景。 以下是空结构体 struct{}的几个常见用途: 空结构体可以用作占位符,表示某个位

    2024年02月14日
    浏览(7)
  • Golang struct 结构体注意事项和使用细节

    Golang struct 结构体注意事项和使用细节

     一个int类型刚好8个字节。 可以看到结构体的字段在内存当中是连续分布的,通过地址的加减来找到对应的数据。 可以看到指针的地址也是连续的,r有两个*point类型,这个两个*Point类型的本身地址也是连续的,但是他们指向的地址不一定是连续。 结构体是用户单独定义的类

    2024年02月11日
    浏览(12)
  • Java 学习路线:基础知识、数据类型、条件语句、函数、循环、异常处理、数据结构、面向对象编程、包、文件和 API

    Java 是一种由 Sun Microsystems 于 1995 年首次发布的编程语言和计算平台。Java 是一种通用的、基于类的、面向对象的编程语言,旨在减少实现依赖性。它是一个应用程序开发的计算平台。Java 快速、安全、可靠,因此在笔记本电脑、数据中心、游戏机、科学超级计算机、手机等领

    2024年03月24日
    浏览(24)
  • go struct结构体之间的转换

    原文链接:https://www.zhoubotong.site/post/94.html 说下背景吧,大家在开发中可能在不同的目录(package)下定义了相同的struct(属性参数完全一样如名字、个数和类型),在方法调用传参数的时候,可能是用到了其中某一个struct的引用。 那么这里就牵扯到相互间的转换:直接上demo: 显然

    2023年04月17日
    浏览(15)
  • Go语言入门6(struct 结构体)

    ​结构体是一种聚合的数据类型,是由零个或多个任意类型的值聚合成的实体。每个值称为结构体的成员 type + 结构体名 + struct + {成员列表} ​⭐如果结构体成员名字是以大写字母开头的,那么该成员就是导出的。这是Go语言导出规则决 定的。一个结构体可能同时包含导出和

    2023年04月12日
    浏览(9)
  • 【go语言基础】结构体struct

    主要是敲代码,敲的过程中会慢慢体会。 结构体是用户定义的类型,表示若干字段的集合,目的是将数据整合在一起。 简单的说,类似Java中的实体类。存储某个实体属性的集合。 注意:结构体名字,结构体属性名的首字母大写代表其余的包可以访问该结构体,类似Java中的

    2024年02月13日
    浏览(13)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包