一尘不染

使用空接口或空结构作为映射值有何区别?

go

我正在使用此构造来模拟一组

type MyType uint8
map[MyType]interface{}

然后,我添加所有密钥并将它们映射到nil

我了解到也可以使用

map[MyType]struct{}

使用空结构与interface{}


阅读 223

收藏
2020-07-02

共1个答案

一尘不染

内存使用情况。例如,类型struct{}interface{}以及bool

package main

import (
    "fmt"
    "unsafe"
)

func main() {
    var s struct{}
    fmt.Println(unsafe.Sizeof(s))
    var i interface{}
    fmt.Println(unsafe.Sizeof(i))
    var b bool
    fmt.Println(unsafe.Sizeof(b))
}

输出(用于32位体系结构的字节):

0
8
1

输出(64位体系结构的字节):

0
16
1

参考文献:

Go数据结构:接口

2020-07-02