Go语言中结构体字面量

结构体字面量(Struct Literal)是在 Go 语言中用于创建和初始化结构体实例的一种语法。它允许你在声明结构体变量的同时,直接为其字段赋值。结构体字面量提供了一种简洁、直观的方式来创建结构体对象。

结构体字面量有两种主要形式:

  1. 按字段顺序初始化(不推荐):
go 复制代码
type Person struct {
    Name string
    Age  int
}

// 使用结构体字面量创建 Person 实例
p := Person{"Alice", 30}
  1. 按字段名初始化(推荐):
go 复制代码
// 使用字段名的结构体字面量
p := Person{
    Name: "Bob",
    Age:  25,
}

使用结构体字面量的一些特点和注意事项:

  1. 灵活性:你可以只初始化部分字段,未指定的字段将使用其类型的零值。
go 复制代码
p := Person{Name: "Charlie"} // Age 将默认为 0
  1. 顺序无关:使用字段名时,字段的顺序可以和结构体定义中的顺序不同。
go 复制代码
p := Person{
    Age:  40,
    Name: "David",
}
  1. 嵌套结构体:对于嵌套的结构体,可以使用嵌套的字面量。
go 复制代码
type Address struct {
    City  string
    State string
}

type Employee struct {
    Name    string
    Address Address
}

e := Employee{
    Name: "Eve",
    Address: Address{
        City:  "New York",
        State: "NY",
    },
}
  1. 与 new 函数:结构体字面量创建的是结构体值,而不是指针。如果需要指针,可以使用 & 操作符。
go 复制代码
p := &Person{Name: "Frank", Age: 35}
  1. 空结构体字面量:可以使用 struct{}{} 创建一个空的结构体实例。
go 复制代码
emptyStruct := struct{}{}

结构体字面量提供了一种清晰、简洁的方式来创建和初始化结构体,特别是在需要快速创建临时结构体实例时非常有用。

相关推荐
新缸中之脑6 分钟前
Moltbook 帖子精选
开发语言·php
xyq202417 分钟前
jQuery Mobile 表单选择
开发语言
青岑CTF22 分钟前
攻防世界-Web_php_include-胎教版wp
开发语言·安全·web安全·网络安全·php
雾岛听蓝29 分钟前
C++11 列表初始化与右值引用核心解析
开发语言·c++·经验分享
小北方城市网39 分钟前
Spring Boot 多数据源与事务管理实战:主从分离、动态切换与事务一致性
java·开发语言·jvm·数据库·mysql·oracle·mybatis
痴儿哈哈40 分钟前
C++与硬件交互编程
开发语言·c++·算法
Loo国昌1 小时前
【垂类模型数据工程】第四阶段:高性能 Embedding 实战:从双编码器架构到 InfoNCE 损失函数详解
人工智能·后端·深度学习·自然语言处理·架构·transformer·embedding
roman_日积跬步-终至千里1 小时前
【Java 并发-面试】从线程基础到企业级开发的知识点概况
java·开发语言
云中飞鸿1 小时前
VS2015安装后,安装QT59,之后安装qt-vsaddin-msvc2015-2.4.3.vsix 文件失败问题!
开发语言·qt
m0_748233171 小时前
C与C++:底层编程的六大核心共性
java·开发语言