# 空结构体struct{}解析

Introduction

``````type Q struct{}
var q struct{}
``````

Width

``````var s string
var c complex128
fmt.Println(unsafe.Sizeof(s))    // prints 8
fmt.Println(unsafe.Sizeof(c))    // prints 16
``````

http://play.golang.org/p/4mzdOKW6uQ

``````var a [3]uint32
fmt.Println(unsafe.Sizeof(a)) // prints 12
``````

http://play.golang.org/p/YC97xsGG73

``````type S struct {
a uint16
b uint32
}
var s S
fmt.Println(unsafe.Sizeof(s)) // prints 8, not 6
``````

An empty struct

``````var s struct{}
fmt.Println(unsafe.Sizeof(s)) // prints 0
``````

``````type S struct {
A struct{}
B struct{}
}
var s S
fmt.Println(unsafe.Sizeof(s)) // prints 0
``````

http://play.golang.org/p/PyGYFmPmMt

What can you do with an empty struct

``````var x [1000000000]struct{}
fmt.Println(unsafe.Sizeof(x)) // prints 0
``````

http://play.golang.org/p/0lWjhSQmkc

``````var x = make([]struct{}, 1000000000)
fmt.Println(unsafe.Sizeof(x)) // prints 12 in the playground
``````

http://play.golang.org/p/vBKP8VQpd8

``````var x = make([]struct{}, 100)
var y = x[:50]
fmt.Println(len(y), cap(y)) // prints 50 100
``````

http://play.golang.org/p/8cO4SbrWVP

``````var a struct{}
var b = &a
``````

``````var a, b struct{}
fmt.Println(&a == &b) // true
``````

http://play.golang.org/p/uMjQpOOkX1

``````a := make([]struct{}, 10)
b := make([]struct{}, 20)
fmt.Println(&a == &b)       // false, a and b are different slices
fmt.Println(&a[0] == &b[0]) // true, their backing arrays are the same
``````

http://play.golang.org/p/oehdExdd96

``````a := struct{}{} // not the zero value, a real new struct{} instance
b := struct{}{}
fmt.Println(a == b) // true
``````

http://play.golang.org/p/K9qjnPiwM8

``````type S struct{}

func (s *S) addr() { fmt.Printf("%p\n", s) }

func main() {
var a, b S
}

``````

http://play.golang.org/p/YSQCczP-Pt

Wrapping up

### 推荐阅读更多精彩内容

• Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具（例如配置管理，服务发现，断路器，智...
卡卡罗2017阅读 131,780评论 18 138
• #mark- 01-指针和数组 //问题:指针类型的用途是什么? 答: 第一个用途, 取值的时候, 会根据指针类型...
飞飞喵阅读 620评论 0 2
• 每日清晨，裹挟着一身汗珠匆匆赶着被地铁“蹂躏”的路上，总是会经过炒面君前的一块空地，空地上的两位步履蹒跚的老人总是...
velaria阅读 615评论 0 1
• 生命中总是遇到那么几个傻姑娘，愿意赔上青春不顾一切的去爱一个不爱她的人。 怀揣着希翼等待，说不定哪天就能感动他...
伊倩阅读 306评论 1 2
• 野生动物第一个是老虎，有这个特质，只为了生存，它仅仅为了生存，这么简单的命题，而且它是嗅觉非常敏锐的。希望咱们在野...
jeffery工业物联阅读 64评论 0 0
• 海棠社第88社 主题：咏人 体裁：不限 文/寒霜 【原创】 蝶恋花·林徽因 才貌并齐遗世谱，一缕诗魂，展尽风华处。...
刘寒霜阅读 450评论 50 31