专栏名称: GoCN
最具规模和生命力的 Go 开发者社区
今天看啥  ›  专栏  ›  GoCN

Go 中空结构体的用法,我帮你总结全了!

GoCN  · 公众号  ·  · 2024-06-11 11:31
    

文章预览

在 Go 语言中,空结构体 struct{} 是一个非常特殊的类型,它 不包含任何字段 并且 不占用任何内存空间 。虽然听起来似乎没什么用,但空结构体在 Go 编程中实际上有着广泛的应用。本文将详细探讨空结构体的几种典型用法,并解释为何它们在特定场景下非常有用。 空结构体不占用内存空间 首先我们来验证下空结构体是否占用内存空间: type  Empty  struct {} var  s1  struct {} s2 := Empty{} s3 :=  struct {}{} fmt.Printf( "s1 addr: %p, size: %d\n" ,  , unsafe.Sizeof(s1)) fmt.Printf( "s2 addr: %p, size: %d\n" ,  , unsafe.Sizeof(s2)) fmt.Printf( "s3 addr: %p, size: %d\n" ,  , unsafe.Sizeof(s3)) fmt.Printf( "s1 == s2 == s3: %t\n" , s1 == s2  & &  s2 == s3) NOTE: 为了保持代码逻辑清晰,这里只展示了代码主逻辑。后文中所有示例代码都会如此,完整代码可以在文末给出的示例代码 GitHub 链接中获取 ………………………………

原文地址:访问原文地址
快照地址: 访问文章快照
总结与预览地址:访问总结与预览