当前位置:网站首页>Go语言自学系列 | golang结构体指针
Go语言自学系列 | golang结构体指针
2022-04-23 08:22:00 【COCOgsta】
视频来源:B站《golang入门到项目实战 [2021最新Go语言教程,没有废话,纯干货!持续更新中...]》
一边学习一边整理老师的课程内容及试验笔记,并与大家分享,侵权即删,谢谢支持!
附上汇总贴:Go语言自学系列 | 汇总_COCOgsta的博客-CSDN博客
结构体指针和普通的变量指针相同,我先来回顾一下普通变量的指针,例如:
package main
import "fmt"
func main() {
var name string
name = "tom"
// p_name 指针类型
var p_name *string
// &name 取name地址
p_name = &name
fmt.Printf("name: %v\n", name)
// 输出指针地址
fmt.Printf("p_name: %v\n", p_name)
// 输出指针指向的内容值
fmt.Printf("*p_name: %v\n", *p_name)
}
运行结果
[Running] go run "d:\SynologyDrive\软件开发\go\golang入门到项目实战\goproject\360duote.com\pro01\test.go"
name: tom
p_name: 0xc000050230
*p_name: tom
go结构体指针
实例
package main
import "fmt"
func main() {
type Person struct {
id int
name string
}
var tom = Person{1, "tom"}
var p_person *Person
p_person = &tom
fmt.Printf("tom: %v\n", tom)
fmt.Printf("p_person: %p\n", p_person)
fmt.Printf("*p_person: %v\n", *p_person)
}
运行结果
[Running] go run "d:\SynologyDrive\软件开发\go\golang入门到项目实战\goproject\360duote.com\pro01\test.go"
tom: {1 tom}
p_person: 0xc000004078
*p_person: {1 tom}
使用new关键字创建结构体指针
我们还可以通过使用new关键字对结构体进行实例化,得到的是结构体的地址,例如:
package main
import "fmt"
func main() {
type Person struct {
id int
name string
}
var p_person = new(Person)
fmt.Printf("p_person: %T\n", p_person)
}
运行结果
[Running] go run "d:\SynologyDrive\软件开发\go\golang入门到项目实战\goproject\360duote.com\pro01\test.go"
p_person: *main.Person
从运行结果,我们发现p_person为指针类型
访问结构体指针成员
访问结构体指针成员,也使用点运算符(.),例如:
package main
import "fmt"
func main() {
type Person struct {
id int
name string
}
var p_person = new(Person)
fmt.Printf("p_person: %T\n", p_person)
p_person.id = 1
p_person.name = "tom"
fmt.Printf("*p_person: %v\n", *p_person)
}
运行结果
[Running] go run "d:\SynologyDrive\软件开发\go\golang入门到项目实战\goproject\360duote.com\pro01\test.go"
p_person: *main.Person
*p_person: {1 tom}
版权声明
本文为[COCOgsta]所创,转载请带上原文链接,感谢
https://blog.csdn.net/guolianggsta/article/details/124355572
边栏推荐
- Ajax cache prevention method
- Sword finger offer Day24 math (medium)
- 5.6 comprehensive case - RTU-
- 什么是RPC
- ESP32程序下载失败,提示超时
- Notes on 30 steps of introduction to Internet of things of yangtao electronics STM32 III. Explanation of new cubeide project and setting
- 根据字节码获取类的绝对路径
- Misunderstanding of flush () method of OutputStream class
- Knowledge points and problem solutions related to information collection
- 请问中衍期货安全靠谱吗?
猜你喜欢
ELK生产实践
ESP32程序下载失败,提示超时
洋桃電子STM32物聯網入門30步筆記一、HAL庫和標准庫的區別
Shell脚本进阶
Redis Desktop Manager for Mac(Redis可视化工具)
K210学习笔记(二) K210与STM32进行串口通信
RCC introduction of Hal Library
WordPress love navigation theme 1.1.3 simple atmosphere website navigation source code website navigation source code
How to generate assembly file
跨域配置报错: When allowCredentials is true, allowedOrigins cannot contain the special value “*“
随机推荐
耳穴诊疗随笔0421
Add random attributes to the Li class array objects and sort them
LINQ Learning Series ----- 1.4 anonymous objects
Protobuf简介
synchronized 实现原理
什么是RPC
Navicat remote connection MySQL
Yangtao electronic STM32 Internet of things entry 30 step notes IV. engineering compilation and download
线程的调度(优先级)
耳穴减肥自身感受细节描述0422
四张图弄懂matplotlib的一些基本用法
DOM学习笔记---遍历页面所有元素节点
Navicat远程连接mysql
对li类数组对象随机添加特性,并进行排序
洋桃电子STM32物联网入门30步笔记四、工程编译和下载
PDF with watermark
Anonymous type (c Guide Basics)
DOM 学习之—添加+-按钮
怎样读取Excel表格到数据库
SYS_ CONNECT_ BY_ Path (column, 'char') combined with start with connect by prior