当前位置: 首页 > news >正文

结构体的定义与实例化

结构体的定义与实例化

在Go语言中,结构体是一种用户自定义的数据类型(复合类型,而非引用类型),可以用来封装多个不同类型的数据成员。结构体的定义和实例化分别如下:

  1. 结构体的定义

结构体的定义使用关键字type和struct,语法格式如下:

type 结构体名 struct {字段名1 类型1字段名2 类型2// ...
}

其中,结构体名是用户自定义的标识符,可以包含字母、数字和下划线。字段名是结构体成员的标识符,也可以包含字母、数字和下划线。类型可以是任意的Go语言数据类型,包括内置类型和其他自定义类型。

例如,定义一个包含姓名和年龄两个字段的Person结构体可以使用以下代码:

type Person struct {Name stringAge  int
}
  1. 结构体的实例化

结构体的实例化可以使用new函数或者直接使用结构体字面量的方式。

使用new函数实例化结构体的语法格式如下:

p := new(Person)

该语句会在内存中创建一个新的Person类型的对象,并返回其指针。可以使用点号.来访问结构体中的成员变量,例如:

p.Name = "Alice"
p.Age = 18
fmt.Println(p) // 输出: &{Alice 18}

使用结构体字面量实例化结构体的语法格式如下:

p := Person{Name: "Alice", Age: 18}

该语句会在内存中创建一个新的Person类型的对象,并返回其值。也可以只指定部分成员变量的值,例如:

p := Person{Name: "Alice"}

此时Age字段的值会使用默认值0。

注意点:

  1. 结构体是值类型,所以当使用赋值语句或者作为函数参数传递时,会进行复制。因此,如果想要修改原始结构体的值,需要传递结构体指针或者使用指针接收者的方法。
  2. 结构体指针必须在初始化以后才能使用,因为仅仅声明的结构体指针类型变量,初始值是nil
  3. 也可以定义没有任何成员的空结构体,在并发编程时,channel之间的的通信可以使用空结构体。
http://www.lryc.cn/news/94116.html

相关文章:

  • canvas详解03-绘制图像和视频
  • VB+ACCESS高校题库管理系统设计与实现
  • centos 安装 nginx
  • TCP/IP详解(一)
  • three.js的学习
  • Spark
  • poi生成excel饼图设置颜色
  • 多版本管理node.js
  • 【深入浅出 Spring Security(七)】RememberMe的实现原理详讲
  • Cesium 实战 - 使用 gltf-vscode 查看、预览以及编辑 glTF 和 GLB 模型
  • Python自动化测试框架:Pytest和Unittest的区别
  • 考研算法29天:希尔排序 【希尔排序】
  • RN 学习小记之使用 Expo 创建项目
  • python爬虫从入门到精通
  • 从0到1精通自动化,接口自动化测试——数据驱动DDT实战
  • 【微服务】springboot整合swagger多种模式使用详解
  • AI 绘画(1):生成一个图片的标准流程
  • CPU、内存、缓存的关系
  • AI黑客松近期比赛清单;36氪AI淘宝店盈利复盘;GitHub Copilot官方最佳实践;AI在HR领域的应用探索 | ShowMeAI日报
  • 想要让视频素材格式快速调整转换的方法分享
  • 面向对象分析与设计 UML2.0 学习笔记
  • [数据库系统] 五、数据增删改
  • docker私有注册表创建和使用
  • 用OpenCV进行OCR字符分割
  • MyCat Docker 搭建与测试
  • 车载通讯USB开发,增强车内娱乐体验
  • js的一些小技巧
  • Springboot Mybatis 自定义顺序排序查询,指定某个字段
  • 期刊会议审稿意见
  • Java类加载机制:从字节码到对象的奇妙之旅