教程集 www.jiaochengji.com
教程集 >  Golang编程  >  golang教程  >  正文 golang 自定义Set 及 使用

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 及 使用”的文章就介绍到这了,更多文章或继续浏览下面的相关文章,希望大家以后多多支持JQ教程网!

您可能感兴趣的文章:
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页面

[关闭]
~ ~