当前位置:网站首页>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
边栏推荐
- RPC procedure
- K210学习笔记(二) K210与STM32进行串口通信
- DOM learning notes - traverse all element nodes of the page
- Sword finger offer Day24 math (medium)
- 记录:js删除数组中某一项或几项的几种方法
- 第一性原理 思维导图
- freertos学习02-队列 stream buffer message buffer
- Yangtao electronic STM32 Internet of things introduction 30 steps notes 1. The difference between Hal library and standard library
- Green apple film and television system source code film and television aggregation film and television navigation film and television on demand website source code
- ansible自動化運維詳解(一)ansible的安裝部署、參數使用、清單管理、配置文件參數及用戶級ansible操作環境構建
猜你喜欢

第一性原理 思维导图

跨域配置报错: When allowCredentials is true, allowedOrigins cannot contain the special value “*“

Knowledge points and problem solutions related to information collection

洋桃电子STM32物联网入门30步笔记二、CubeIDE下载、安装、汉化、设置

引用传递1

HAL库的RCC简介

Search the complete navigation program source code

根据字节码获取类的绝对路径

【路科V0】验证环境2——验证环境组件

LeetCode-199-二叉树的右视图
随机推荐
idea配置连接远程数据库MySQL,或者是Navicat连接远程数据库失败问题(已解决)
ELK生产实践
excle加水印
匿名類型(C# 指南 基礎知識)
DOM 学习之—添加+-按钮
Use of applicationreadyevent
Failed to convert a NumPy array to a Tensor(Unsupported Object type int)
Large amount of data submitted by form post
freertos学习02-队列 stream buffer message buffer
Sword finger offer Day24 math (medium)
CGM optimizes blood glucose monitoring and management -- Yiyu technology appears in Sichuan International Medical Exchange Promotion Association
怎样读取Excel表格到数据库
STM32使用HAL库,整体结构和函数原理介绍
匿名类型(C# 指南 基础知识)
Using qlst excel file
Queue (C language / linked list)
A simple theme of Typecho with beautiful appearance_ Scarfskin source code download
vmware 搭建ES8的常见错误
监控智能回放是什么,如何使用智能回放查询录像
rust 使用tokio的Notify 和timeout实现类似可超时条件变量的效果