go语言结构体使用小结
转载请注明出处:
在Go语言中,结构体(struct)是一种复合数据类型,它允许你将多个不同类型的字段组合成一个单一的类型。结构体为数据的封装和抽象提供了便利,使得数据组织更加清晰和易于管理。
结构体的定义
结构体的定义使用type
关键字和struct
类型,然后列出结构体的字段名和类型。
type Person struct {
Name string
Age int
Email string
}
在这个例子中,定义了一个名为Person
的结构体,它有三个字段:Name
(字符串类型),Age
(整型),和Email
(字符串类型)。
结构体的实例化
使用结构体类型来创建结构体变量,这通常被称为结构体的实例化。
// 使用字面量创建结构体实例
p1 := Person{
Name: "Alice",
Age: 30,
Email: "alice@example.com",
} // 使用字段名来设置值
p2 := Person{
Name: "Bob",
Age: 25,
}
p2.Email = "bob@example.com" // 使用结构体类型创建变量,然后分别设置字段
var p3 Person
p3.Name = "Charlie"
p3.Age = 35
p3.Email = "charlie@example.com"
结构体的集合
结构体集合通常指的是一个包含多个结构体实例的切片(slice)。
// 定义一个Person类型的切片
var people []Person // 向切片中添加结构体实例
people = append(people, p1)
people = append(people, p2)
people = append(people, p3) // 或者直接初始化一个包含多个实例的切片
people = []Person{
{Name: "Alice", Age: 30, Email: "alice@example.com"},
{Name: "Bob", Age: 25, Email: "bob@example.com"},
{Name: "Charlie", Age: 35, Email: "charlie@example.com"},
}
结构体的遍历
使用for
循环来遍历结构体切片。
// 遍历结构体切片
for _, person := range people {
fmt.Printf("Name: %s, Age: %d, Email: %s\n", person.Name, person.Age, person.Email)
}
在这个循环中,range
关键字用于迭代people
切片中的每一个元素。_
是一个空白标识符,用于忽略索引值,只获取切片中的元素。person
是每次迭代时当前元素的副本,可以访问它的字段。
结构体方法和接收器
在Go中,还可以为结构体定义方法,方法是一种特殊的函数,它关联到一个特定的类型上。方法的第一个参数是接收器(receiver),它指定了方法关联的类型。
func (p Person) SayHello() {
fmt.Printf("Hello, my name is %s and I'm %d years old.\n", p.Name, p.Age)
} // 使用结构体方法
p1.SayHello() // 输出: Hello, my name is Alice and I'm 30 years old.
在上面的代码中,定义了一个名为SayHello
的方法,它接收一个Person
类型的接收器p
。然后可以像调用普通函数一样调用这个方法,但是需要使用结构体实例来调用它。
go语言结构体使用小结的更多相关文章
- 漫谈C语言结构体struct、公用体union空间占用
先用代码说话: #include<stdio.h> union union_data0{ int a ;//本身占用4个字节 char b ;//本身占用1个字节 int c ; }; u ...
- 解析C语言结构体对齐(内存对齐问题)
C语言结构体对齐也是老生常谈的话题了.基本上是面试题的必考题.内容虽然很基础,但一不小心就会弄错.写出一个struct,然后sizeof,你会不会经常对结果感到奇怪?sizeof的结果往往都比你声明的 ...
- 不可或缺 Windows Native (8) - C 语言: 结构体,共用体,枚举,类型定义符
[源码下载] 不可或缺 Windows Native (8) - C 语言: 结构体,共用体,枚举,类型定义符 作者:webabcd 介绍不可或缺 Windows Native 之 C 语言 结构体 ...
- Go语言结构体(struct)
Go 语言结构体 Go 语言中数组可以存储同一类型的数据,但在结构体中我们可以为不同项定义不同的数据类型. 结构体是由一系列具有相同类型或不同类型的数据构成的数据集合. 结构体表示一项记录,比如保存图 ...
- C语言结构体定义的几种方法
什么是结构体? 在C语言中,结构体(struct)指的是一种数据结构,是C语言中聚合数据类型(aggregate data type)的一类.结构体可以被声明为变量.指针或数组等,用以实现较复杂的数据 ...
- 对嵌入式开发C语言结构体的一点总结
今天冬至居然不上班,公司的良心啊!这回有心情写博客和日志了,好了,废话不多说.直接看下文: 鉴于嵌入式开发过程中,C语言结构体的使用当然是必不可少.话说,基础什么的比你会更牛逼的算法更重要,基础不牢, ...
- C语言结构体变量私有化
操作系统 : CentOS7.3.1611_x64 gcc版本 :4.8.5 问题描述 C语言结构体定义中的变量默认是公有(Public)属性,如果实现成员变量的私有(Private)化? 解决方案 ...
- 在C语言结构体中添加成员函数
我们在使用C语言的结构体时,经常都是只定义几个成员变量,而学过面向对象的人应该知道,我们定义类时,不只是定义了成员变量,还定义了成员方法,而类的结构和结构体非常的相似,所以,为什么不想想如何在C语言结 ...
- 将c语言的结构体定义变成对应的golang语言的结构体定义,并将golang语言结构体变量的指针传递给c语言,cast C struct to Go struct
https://groups.google.com/forum/#!topic/golang-nuts/JkvR4dQy9t4 https://golang.org/misc/cgo/gmp/gmp. ...
- Linux C语言结构体-学习笔记
Linux C语言结构体简介 前面学习了c语言的基本语法特性,本节进行更深入的学习. 预处理程序. 编译指令: 预处理, 宏定义, 建立自己的数据类型:结构体,联合体,动态数据结构 c语言表达式工具 ...
随机推荐
- 新零售SaaS架构:订单履约系统架构设计(万字图文总结)
什么是订单履约系统? 订单履约系统用来管理从接收客户订单到将商品送达客户手中的全过程. 它连接了上游交易(客户在销售平台下单环)和下游仓储配送(如库存管理.物流配送),确保信息流顺畅.操作协同,提升整 ...
- CPNtools协议建模安全分析---实例库所标记(四)
1.我们经常使用弧上单个变量表达式来过滤数据类型,如果是多个类型的变量可以嵌套写 像上面的的 库所标记的数值 1·(2,5,"a")++ 那么弧表达式会根据要求来过滤 ...
- foundation部分学习记录(更正更新中……)
foundation部分学习记录(更新中--) 从FDB的角度看,它对上层只提供有序+事务+KV存储的抽象. 设计原则 模块化分割,尽量细分且模块之间相互解耦 例如事务系统内,其提交(write pa ...
- 闭关修炼180天----吐血整理MongoDB的学习笔记
MongoDB 一.MongoDB体系结构 1.1 mongoDB和NoSql mongoDB是一种NoSql,是文档存储的代表. mongoDB是一个基于分布式文件存储的数据库.为web应用提供可扩 ...
- 【数据结构】C语言实现动态扩容数组
// resizable array /* Think about a set of functions that provide a mechanism of resizable array of ...
- Java Springboot javax.net.ssl.SSLException: Connection reset解决方案
接口设置HTTPS TLS1.2后,随机出现SSLException: Connection reset报错: javax.net.ssl.SSLException: Connection reset ...
- 遇到百张数据表也不怕,Java自动生成实体、Controller、DAO、Service以及Service实现类
一.说明 该工具类实现以下功能: 1.简单的controller方法 2.自动生成Dao类 2.自动生成Service类 2.自动生成ServiceImpl类 二.连接数据库 // 数据库配置信息 p ...
- 反转链表——java
给定一个链表,请你将链表反转过来. 举例:原链表:1→2→3→4→5→null 反转链表:5→4→3→2→1→null 代码: package algorithm_niuke; public clas ...
- C#的窗体防闪烁解决方案 - 开源研究系列文章
昨天编码的时候想到了关于无边框窗体的闪烁问题,主要是改变窗体大小的时候会闪烁,默认的窗体没这个问题.而现在无边框窗体的应用比较多,所以就找了度娘,然后结合自己的经验进行了测试,得到了这个例子,简单有效 ...
- 记录--你知道Vue中的Scoped css原理么?
这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 追忆Scoped 偶然想起了一次面试,二面整体都聊完了,该做的算法题都做出来了,该背的八股文也背的差不多了,面试官频频点头,似乎对我的基础 ...