tnblog
首页
视频
资源
登录

Go Map与工厂模式,在Go语言中实现Set

7154人阅读 2020/12/17 18:16 总访问:3663652 评论:0 收藏:0 手机
分类: Go

go数据类型

Go Map与工厂模式,在Go语言中实现Set

Map与工厂模式

  • Map 的 value 可以是一个方法
  • 与 Go 的 Dock type 接口方式一起,可以方便的实现单一方法对象的工厂模式
  1. package map_test
  2. import "testing"
  3. func TestMapWithFunValue(t *testing.T) {
  4. m := map[int]func(op int) int{}
  5. m[1] = func(op int) int { return op }
  6. m[2] = func(op int) int { return op * op }
  7. m[3] = func(op int) int { return op * op * op }
  8. t.Log(m[1](2), m[2](2), m[3](2))
  9. }

实现 Set

Go 的内置集合中没有Set实现,可以map[type]bool

  1. 元素的唯一性
  2. 基本操作
    • 添加元素
    • 判断元素是否存在
    • 删除元素
    • 元素个数
  1. func TestMapForSet(t *testing.T) {
  2. mySet := map[int]bool{}
  3. mySet[1] = true
  4. n := 3
  5. if mySet[3] {
  6. t.Logf("%d is existing", n)
  7. } else {
  8. t.Logf("%d is not existing", n)
  9. }
  10. mySet[3] = true
  11. t.Log(len(mySet))
  12. delete(mySet, 1)
  13. n = 1
  14. if mySet[n] {
  15. t.Logf("%d is existing", n)
  16. } else {
  17. t.Logf("%d is not existing", n)
  18. }
  19. }


欢迎加群讨论技术,1群:677373950(满了,可以加,但通过不了),2群:656732739

评价

Go Map声明、元素访问与遍历

Go Map声明、元素访问与遍历[TOC] Map的声明 Map的声明相当于其他语言的键值队,通常通过map[key_type]value_type的方式...

css弹性盒子flex布局

css弹性盒子由于版本不同浏览器问题造成了一些不同的写法display:flexbox;在google浏览器中如果使用下面的写法就不行displa...

可输入下拉文本框据输入动态加载数据 jquery-editable-select

用到一个jquery-editable-select的控件github地址:https://github.com/indrimuska/jquery-editable-select这个插件的原理是...

.net mvc分部页.net core分部页

.net分部页的三种方式第一种:@Html.Partial("_分部页")第二种:@{ Html.RenderPartial("分部页");}...

css中单位pxemrem和vh/vw的理解

>px像素(Pixel)。相对长度单位。像素px是相对于显示器屏幕分辨率而言的。em是相对长度单位。相对于当前对象内文本的字...

让IIS支持webp格式图片让IIS支持vtt格式iis设置mime类型iis配置支持的类型

webp格式图片可以让图片体积变小。也让下载图片变得更加困难一点 在线制作webp工具 https://www.upyun.com/webp?utm_mediu...

网页上传文件断点续传的实现无视文件大小上传以及datatables基本用法

首先明白js是客户带执行代码,c#是服务器上执行代码。本地文件需要用到js处理,服务器端接受c#代码处理1.HTML页面,文件信...

如何使用图标像使用文字一样使用文本图标的方法

1.首先在Iconfont-阿里巴巴矢量图标库上面找到你需要的图标然后加入你的购物车然后选择图标;注意:每个类型的图标会大小不...

使用七牛云的cdn服务提高图片的加载速度

CDN介绍CDN的全称是Content Delivery Network,即内容分发网络。CDN加速主要是加速静态资源,如网站上面上传的图片、媒体,...

通俗易懂什么是.NET?什么是.NET Framework?什么是.NET Core?

朋友圈@蓝羽 看到一篇文章写的太详细太通俗了,搬过来细细看完,保证你对.NET有个新的认识理解原文地址:https://www.cnblo...

JS监听input、keydown有输入法时打字完成后触发事件

在给输入框绑定input或keydown事件时预期效果是有输入法时,输入中文后触发事件,不希望输一个字母就触发一次事件可以用到c...

修改了css后让浏览器从缓存中更新

当我们修改了css后,如果不做一些操作,浏览器是不会自动更新我们的样式文件的。除非是过期或者用户手动刷新清理缓存等。所...

C MVC RedirectToAction跳转时候传递参数Action之间传值

MVC Action之间传值,页面跳转传值方法一:路由传值很简单直接使用 RedirectToAction(string actionName, string controller...

当你工作遇到以下几种状态时请果断跳槽走人

已经有想跳槽的念头,但是一直磨磨蹭蹭、犹犹豫豫的混日子,这种念头或者一直持续,或者是不是冒出头来占据你的思维了。于...
这一世以无限游戏为使命!
排名
30
文章
18
粉丝
6
评论
11
docker中Sware集群与service
尘叶心繁 : 想学呀!我教你呀
一个bug让程序员走上法庭 索赔金额达400亿日元
叼着奶瓶逛酒吧 : 所以说做程序员也要懂点法律知识
.net core 塑形资源
剑轩 : 收藏收藏
映射AutoMapper
剑轩 : 好是好,这个对效率影响大不大哇,效率高不高
ASP.NET Core 服务注册生命周期
剑轩 : http://www.tnblog.net/aojiancc2/article/details/167
ICP备案 :渝ICP备18016597号-1
网站信息:2018-2025TNBLOG.NET
技术交流:群号656732739
联系我们:contact@tnblog.net
公网安备:50010702506256
欢迎加群交流技术