golang 存在檢測方案

map

有時侯需要記綠一下數據集是否存在,就會想到用map數據結構,比如:map[int]bool,但是如果並不關心或者不用儲存值的話就可以使用 map[int]interface{},這樣的區別是可以賦值 struct{}{},減少內存空間的占用:

cache := make(map[int]interface{})
cache[1] = struct{}{}

其中內存空間查看: playground

package main

import (
    "fmt"
    "unsafe"
)

func main() {
    a := struct{}{}
    b := true
    c := 0
    d := ""
    fmt.Println(unsafe.Sizeof(a))
    fmt.Println(unsafe.Sizeof(b))
    fmt.Println(unsafe.Sizeof(c))
    fmt.Println(unsafe.Sizeof(d))
}

結果

0
1
8
16