go实现set

复制代码
package main

import (
    "fmt"
    "sync"
)

type object interface{}
type Set struct {
    m map[object]bool
    sync.RWMutex //线程安全实现,记录下
}

//初始化
func New() *Set {
    return &Set{
        m: map[object]bool{},
    }
}

func (s *Set) Add(item object) {
    s.Lock()
    defer s.Unlock()
    s.m[item] = true
}

func (s *Set) Remove(item object) {
    s.Lock()
    defer s.Unlock()
    delete(s.m, item)
}

func (s *Set) Clean() {
    s.m = map[object]bool{}
}
func (s *Set) Len() int {
    return len(s.m)
}

func (s *Set) Contains(item object) bool {
    _, ok := s.m[item];
    return ok
}

func (s *Set) IsEmpty() bool {
    fmt.Println(len(s.m))
    return len(s.m) > 0
}

func main() {
    s := New()
    fmt.Println(s.IsEmpty())
    s.Add("aaa")
    fmt.Println(s.IsEmpty())
    s.Add("1")
    s.Add("2")
    s.Add("3")
    fmt.Println(s.Contains("3"))
    //s.Clean()
    for key, _ := range s.m {
        fmt.Println("Key:", key)
    }
}
复制代码

 

posted @   wujf  阅读(866)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
点击右上角即可分享
微信分享提示