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{}{}

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

相关推荐
苏三说技术1 小时前
聊聊Redisson最常见的8个坑
后端
Funlang1 小时前
给机器写的 JavaScript 造个笼子
开发语言·javascript·ecmascript
普通人61 小时前
PHP文件读写完全指南
开发语言·php·1024程序员节
坤坤子吖2 小时前
Linux网络编程:TCP服务器的多进程与多线程实现
linux·服务器·开发语言·网络·c++·笔记·学习
一晌小贪欢2 小时前
Python基础:第 09 篇 · while 循环:重复直到不满足
开发语言·c++·python·数据可视化·面向对象·python办公
xiaoye-duck3 小时前
《C++ 项目:手写大模型接入 SDK》LLMManager架构设计与实现
开发语言·网络·c++·语言模型
一条大祥脚3 小时前
CuTe 与 CuTe DSL:从 C++ 模板元编程到 Python DSL 的 GPU 编程演进
开发语言·c++·python·cutlass·cute·cute dsl
学长毕设4 小时前
基于SpringBoot的野生动物公益保护平台设计与实现-附源码
java·spring boot·后端
梦里寻码4 小时前
我用 NestJS + Vue3 写了一套完整的研发管理系统(58 表 / 229 API / 130 项断言,全开源
前端·后端·算法
FRing034 小时前
vue2干货总结8(路由模块封装、router-link、声明式导航、路由重定向、编程式导航)
开发语言·前端·vue.js·vue2