使用map构造set
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{}{}指向同一个位置
评论已关闭