go的数据类型-其他数据类型-pointer(三)
Go 数据类型 其他 Pointer
2023-06-13 09:18:44 时间
指向结构体的指针
在Go语言中,我们可以使用指向结构体的指针来操作结构体的成员。一个指向结构体的指针指向结构体的第一个成员的地址。
下面是一个使用指向结构体的指针来操作结构体成员的示例代码:
package main
import "fmt"
// 定义一个结构体
type Person struct {
Name string
Age int
}
func main() {
// 创建一个Person类型的变量
var p Person
p.Name = "Alice"
p.Age = 25
// 创建一个指向Person类型变量的指针
var ptr *Person = &p
// 使用指针访问结构体成员
fmt.Println((*ptr).Name) // 输出 Alice
fmt.Println((*ptr).Age) // 输出 25
// 或者使用隐式指针间接访问结构体成员
fmt.Println(ptr.Name) // 输出 Alice
fmt.Println(ptr.Age) // 输出 25
}
在这个示例代码中,我们首先定义了一个名为Person
的结构体类型,它有两个成员,分别是Name
和Age
。
然后,我们创建了一个Person
类型变量p
,并给它的成员Name
和Age
分别赋值为"Alice"
和25
。
接着,我们创建了一个指向Person
类型变量p
的指针ptr
,并使用*
运算符获取指针指向的结构体的成员的值,并打印出来。需要注意的是,我们需要将*ptr
用括号括起来,以确保(*ptr).Name
和(*ptr).Age
被视为一个整体,而不是先对指针解引用,然后再取成员的值。
除此之外,我们还可以使用隐式指针间接访问结构体成员,即直接使用指针的成员名来访问指向结构体的指针所指向的结构体的成员。这种方式更加简洁,代码也更加易读。
输出结果为:
Alice
25
Alice
25
这个示例代码展示了如何使用指向结构体的指针来访问结构体的成员。通过指向结构体的指针,我们可以方便地修改结构体的成员值,而不需要对整个结构体进行复制和传递。
相关文章
- Go 编程 | 连载 06 - 基本数据类型转换(strconv)
- Go短网址项目实战---下
- 2022-09-06:以下go语言代码输出什么?A:Hi All;B:Hi go All;C:Hi;D:go All。 package main import
- go富集分析和kegg富集分析的区别_非模式生物怎么做GO富集
- Go并发聚合请求利器——singleflight的源码详解
- 深入分析Go defer底层原理
- 【Go】留意 Select 的预求值!
- Go基础数据类型使用实战:int float bool
- Go 数据类型篇(七):字典使用入门与字典排序实现
- Go语言中常见100问题-#23 Not properly checking if a slice is empty
- Go语言知识查漏补缺|基本数据类型
- 「Go工具箱」一个简单、易用的多错误管理包:go-multierror
- client-go 源码分析(7) - workerqueue之普通队列Queue
- Go 模块 verifying xxx/go.mod: checksum mismatch 问题处理
- Go语言基准测试(benchmark)三部曲之一:基础篇
- go的数据类型-基本数据类型-浮点型
- go的数据类型-复合数据类型-struct(二)
- go的数据类型-其他数据类型-function(二)
- go的数据类型-其他数据类型-interface(一)
- go的数据类型-其他数据类型-interface(三)
- Go语言字符串
- Go语言goto语句——跳转到指定的标签
- go pprof命令(Go语言性能分析命令)完全攻略
- redis分布式锁的go-redis实现方法详解
- Go语言圣经–作用域,基础数据类型,整型详解编程语言
- Go—go-cache包学习详解编程语言
- go语言之数据类型和格式化输出详解编程语言
- 环境Go 编译 在 Linux 环境中的体验(go编译linux)
- 深度探索Go语言与Redis结合(go-redis)
- 简易教程:如何在 Linux 上安装 GO 语言(go语言安装linux)
- 数据库探索Go语言与Oracle数据库的结合(go语言中的oracle)
- GO语言实现列出目录和遍历目录的方法