package main

import "fmt"

type Set map[string]struct{} //空struct不占空间

func main() {
    s := make(Set)
    s["zhangsan"] = struct{}{}
    s["lisi"] = struct{}{}
    s["wangwu"] = struct{}{}
    fmt.Println(get_value(s))
}

func get_value(s Set) []string {
    var setvalue []string
    for key, _ := range s {
        setvalue = append(setvalue, key)
    }
    return setvalue
}

map的key无序、不重复,跟set有着很相似的特性,而空struct{}不占空间,用来填充值是最合适的,struct{}{}是一个复合字面量,他表示一个struct{}类型的值,因为是字面量(除了数字以外的常量),所以所有struct{}{}指向同一个位置

标签: none

评论已关闭