⑦ 结构体
本文即将看到:
⚬ ------ 结构体声明
⚬ ------ 结构体指针
⚬ ------ 结构体嵌套
一、结构体声明
- 结构体的定义及初始化
结构体是由一系列具有相同类型或不同类型的数据构成的集合
定义
type Name struct{
name1 type //有名字
name2 type
}
type Name struct{
type //匿名 默认为类型名 访问用Name.type
type //看初始化方法四的使用
}
匿名结构体
n := struct{
name1 type
name2 type
}{
nmae1: value,
name2: value,
}
初始化
● 1.方法一
var p Name //Name是结构体的名字
p.name1 = value // . 用点访问结构体
p.name2 = value
● 2.方法二
p := Name{}
p.name1 = value
● 3.方法三
p := Name{
name1: value,
name2: value,
}
● 4.方法四
p := Name{value,value}
// 按照结构体默认顺序进行赋值
// 注意数据类型一致
二、结构体指针
- 定义
type Name struct{
Name1 type
Name2 type
}
- 结构体指针
创建
● 1.方法一
var p *Name //结构体名称
p = &Name{}
● 2.方法二
p := new(Name) // Name 结构体名称
// new 不是nil空指针 而是开辟了指向的内存空间, 且存储的是指向数据的初值
访问
var p *Name
p.name1 = value -> 相当于(*p).Name = value
示例
package main
import "fmt"
//结构体
type Student struct {
Name string
Age int
Id int
}
// 用指针改变结构体变量
func main() {
var n Student
n.Name = "小小灰"
n.Age = 20
n.Id = 100600
fmt.Println(n) //{小小灰 20 100600}
n1 := n // 这里只是拷贝n的副本
n1.Name = "小小图"
fmt.Println(n1) // {小小图 20 100600}
fmt.Println(n) // {小小灰 20 100600} n并没有改变
// 结构体指针
var n2 *Student
n2 = &n // 取n的地址
n2.Name = "小小鬼" // 相当于(*n2).Name
fmt.Println(n) // {小小鬼 20 100600}
fmt.Println(*n2) // 获取n2指向地址的数据 {小小鬼 20 100600}
n3 := new(Student)
n3 = &n
n3.Name = "小小锥"
fmt.Println(n) // {小小锥 20 100600}
fmt.Println(n3) // &{小小锥 20 100600}
}
三、结构体嵌套
示例
package main
import "fmt"
type Book struct {
BookNAme string
Price int
}
type Student struct {
Name string
Age int
Book
}
func main(){
var stu Student
stu.BookNAme = "无书" //相当于 stu.book.book.name
fmt.Println(stu) // { 0 {无书 0}}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?