Сколько занимает в памяти хранение такой структуры, если судить по коду снизу, то вообще не занимает, но как такое возможно, ведь где то должно храниться то, что тип данных в мапе это пустая структура.
код отсюда
package main
import (
"fmt"
"unsafe"
)
func main() {
variant1 := make(map[string]bool)
variant2 := make(map[string]struct{})
for i := 0; i < 1<<16; i++ {
key := fmt.Sprintf("%v", i)
variant1[key] = true
variant2[key] = struct{}{}
}
size1 := unsafe.Sizeof(variant1)
size2 := unsafe.Sizeof(variant2)
for k, v := range variant1 {
size1 += unsafe.Sizeof(k)
size1 += unsafe.Sizeof(v)
}
for k, v := range variant2 {
size2 += unsafe.Sizeof(k)
size2 += unsafe.Sizeof(v)
}
fmt.Printf("bool variant : %v bytes\n", size1)
fmt.Printf("struct variant: %v bytes\n", size2)
// bool variant : 1114120 bytes
// struct variant: 1048584 bytes
// size1-size2 65536 bytes
}