golang 自定义Set 及 使用
发布时间:2022-03-22 编辑:jiaochengji.com
教程集为您提供golang 自定义Set 及 使用等资源,欢迎您收藏本站,我们将为您提供最新的golang 自定义Set 及 使用资源
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;"><path stroke-linecap="round" d="M5,0 0,2.5 5,5z" id="raphael-marker-block" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);"/></svg><h2>定义</h2>
<pre><code>package MyDataType
import (
"fmt"
)
var Exists = struct{}{}
//set类型
type Set struct {
// struct为结构体类型的变量
m map[interface{}]struct{}
}
// 定义非空结构体
type S struct {
a uint16
b uint32
}
//返回一个set
func New(items ...interface{}) *Set {
// 获取Set的地址
s := &Set{}
// 声明map类型的数据结构
s.m = make(map[interface{}]struct{})
_ = s.Add(items...)
return s
}
func (s *Set) Size() int {
return len(s.m)
}
//添加元素
func (s *Set) Add(items ...interface{}) error {
for _, item := range items {
s.m[item] = Exists
}
return nil
}
//删除元素
func (s *Set) Remove(val int) {
delete(s.m, val)
}
//获取长度
func (s *Set) Len() int {
return len(s.m)
}
//清空set
func (s *Set) Clear() {
s.m = make(map[interface{}]struct{})
}
//遍历set
func (s *Set) Traverse(){
for v := range s.m {
fmt.Println(v)
}
}
//包含
func (s *Set) Contains(item interface{}) bool {
_, ok := s.m[item]
return ok
}
func (s *Set) IsSubset(other *Set) bool {
// s的size长于other,不用说了
if s.Size() > other.Size() {
return false
}
// 迭代遍历
for key := range s.m {
if !other.Contains(key) {
return false
}
}
return true
}
</code></pre>
<h2>使用</h2>
<pre><code>import (
"MyDataType"
)
func main() {
set := MyDataType.New(0)
_ = set.Add("weilingyan", "weijiamin", "weilingyan", "tianxiaodi")
set.Traverse()
set.Clear()
}
</code></pre>
您可能感兴趣的文章:
golang 自定义Set 及 使用
GOLANG环境安装
golang error 包 使用 以及error类型原理
go 实现泛型_在Go中生成泛型类型的实现
Golang 微服务 - 01 环境和工具
从零开始学习GO语言-搭建Go语言开发环境-快速开发入门第一个小程序
golang key map 所有_谨慎使用golang中的map
JWT Token认证
使用GoAdmin极速搭建golang应用管理后台(二)——自定义登录页面
Golang 标准库net/http自定义404页面
上一篇:golang 去除字符串首尾空格
下一篇:Go安装、变量声明、strings模块
[关闭]