当前位置: 首页 > news >正文

samber/lo 库的使用方法: condition

samber/lo 库的使用方法: condition

samber/lo 是一个 Go 语言库,使用泛型实现了一些常用的操作函数,如 Filter、Map 和 FilterMap。汇总目录页面

这个库函数太多,因此我决定按照功能分别介绍,本文介绍的是 samber/lo 库中条件相关的函数。

Ternary

三元运算符, 第一个参数是条件,如果为真则返回第二个参数,否则返回第三个参数。

result := lo.Ternary(true, "a", "b")
// "a"result := lo.Ternary(false, "a", "b")
// "b"

[play]

TernaryF

和 Ternary 类似,但是第二个和第三个参数是函数。

result := lo.TernaryF(true, func() string { return "a" }, func() string { return "b" })
// "a"result := lo.TernaryF(false, func() string { return "a" }, func() string { return "b" })
// "b"

对于避免在初始化时进行nil指针解引用或避免运行不必要的代码很有用。

var s *stringsomeStr := TernaryF(s == nil, func() string { return uuid.New().String() }, func() string { return *s })
// ef782193-c30c-4e2e-a7ae-f8ab5e125e02

[play]

If / ElseIf / Else

链式条件判断,返回第一个为真的值。

result := lo.If(true, 1).ElseIf(false, 2).Else(3)
// 1result := lo.If(false, 1).ElseIf(true, 2).Else(3)
// 2result := lo.If(false, 1).ElseIf(false, 2).Else(3)
// 3

使用lo.IfF等函数时, 第二个参数是函数:

result := lo.IfF(true, func () int {return 1}).ElseIfF(false, func () int {return 2}).ElseF(func () int {return 3})
// 1

也可以混合使用:

result := lo.IfF(true, func () int {return 1}).Else(42)
// 1

[play]

Switch / Case / Default

链式Switch语句,返回第一个匹配的值。

result := lo.Switch(1).Case(1, "1").Case(2, "2").Default("3")
// "1"result := lo.Switch(2).Case(1, "1").Case(2, "2").Default("3")
// "2"result := lo.Switch(42).Case(1, "1").Case(2, "2").Default("3")
// "3"

或者使用回调函数:

result := lo.Switch(1).CaseF(1, func() string {return "1"}).CaseF(2, func() string {return "2"}).DefaultF(func() string {return "3"})
// "1"

混用:

result := lo.Switch(1).CaseF(1, func() string {return "1"}).Default("42")
// "1"

[play]

相关文章:

samber/lo 库的使用方法: condition

samber/lo 库的使用方法: condition samber/lo 是一个 Go 语言库,使用泛型实现了一些常用的操作函数,如 Filter、Map 和 FilterMap。汇总目录页面 这个库函数太多,因此我决定按照功能分别介绍,本文介绍的是 samber/l…...

Chrome插件精选 — 缓存清理

Chrome实现同一功能的插件往往有多款产品,逐一去安装试用耗时又费力,在此为某一类型插件挑选出比较好用的一款或几款,尽量满足界面精致、功能齐全、设置选项丰富的使用要求,便于节省一个个去尝试的时间和精力。 1. Chrome清理大师…...

Redis之缓存穿透问题解决方案实践SpringBoot3+Docker

文章目录 一、介绍二、方案介绍三、Redis Docker部署四、SpringBoot3 Base代码1. 依赖配置2. 基本代码 五、缓存优化代码1. 校验机制2. 布隆过滤器3. 逻辑优化 一、介绍 当一种请求,总是能越过缓存,调用数据库,就是缓存穿透。 比如当请求一…...

每日shell脚本之超级整合程序3.0

每日shell脚本之超级整合程序3.0 本期带来之前的升级版2.0整合脚本程序,学习工作小利器,同时模块化构建方便二次开发。 上图 上源码 #!/usr/bin/bash # *******************************************# # * CDDN : M乔木 # # * qq邮箱 …...

Docker介绍与使用

Docker介绍与使用 目录: 一、Docker介绍 1、Docker概述与安装 2、Docker三要素 二、Docker常用命令的使用 1、镜像相关命令 2、容器相关命令 三、Docker实战之下载mysql、redis、zimg 一、Docker介绍 Docker是一个开源的应用容器引擎,让开发者可以打包…...

Gin框架: 使用go-ini配置参数与不同环境下的配置部署

关于 INI 配置文件与go-ini 1 )概述 在INI配置文件中可以处理各种数据的配置INI文件是一种简单的文本格式,常用于配置软件的各种参数go-ini 是地表 最强大、最方便 和 最流行 的 Go 语言 INI 文件操作库 Github 地址:https://github.com/go-…...

探究网络工具nc(netcat)的使用方法及安装步骤

目录 🐶1. 什么是nc(netcat)? 🐶2. nc(netcat)的基本使用方法 2.1 🥙使用 nc 进行端口监听 2.2 🥙使用 nc 进行端口扫描 2.3 🥙使用 Netcat 进行文件传输…...

深入浅出JVM(四)之类文件结构

深入浅出JVM(四)之类文件结构 Java文件编译成字节码文件后,通过类加载机制到Java虚拟机中,Java虚拟机能够执行所有符合要求的字节码,因此无论什么语言,只要能够编译成符合要求的字节码文件就能够被Java虚拟…...

Anaconda下的pkgs占用空间13G,如何安全的清理(已解决)

方法一:让Anaconda自行决定清理 执行命令 conda clean -p 我的Anaconda安装在D盘,具体位置如下。你的应该也能找到对应的位置 D:\*****\**\Anaconda3\pkgs (base) C:\Users\Liu_J>conda clean -p WARNING: C:\Users\***\.conda\pkgs does not ex…...

压缩感知常用的重建算法

重建算法的基本概念 在压缩感知(Compressed Sensing, CS)框架中,重建算法是指将从原始信号中以低于奈奎斯特率采集得到的压缩测量值恢复成完整信号的数学和计算过程。由于信号在采集过程中被压缩,因此重建算法的目标是找到最符合…...

c语言经典测试题2

1.题1 我们来思考一下它的结果是什么? 我们来分析一下:\\是转义为字符\,\123表示的是一个八进制,算一个字符,\t算一个字符,加上\0,应该有13个,但是strlen只计算\0前的字符个数。所以…...

⭐北邮复试刷题105. 从前序与中序遍历序列构造二叉树__递归分治 (力扣每日一题)

105. 从前序与中序遍历序列构造二叉树 给定两个整数数组 preorder 和 inorder ,其中 preorder 是二叉树的先序遍历, inorder 是同一棵树的中序遍历,请构造二叉树并返回其根节点。 示例 1: 输入: preorder [3,9,20,15,7], inorder [9,3,15,…...

机房预约系统(个人学习笔记黑马学习)

1、机房预约系统需求 1.1系统简介 学校现有几个规格不同的机房,由于使用时经常出现“撞车“现象,现开发一套机房预约系统,解决这一问题。 1.2身份简介 分别有三种身份使用该程序 学生代表:申请使用机房教师:审核学生的预约申请管理员:给学生、教师创建账…...

7、内网安全-横向移动PTH哈希PTT票据PTK密匙Kerberos密码喷射

用途:个人学习笔记,有所借鉴,欢迎指正 目录 一、域横向移动-PTH-Mimikatz&NTLM 1、Mimikatz 2、impacket-at&ps&wmi&smb 二、域横向移动-PTK-Mimikatz&AES256 三、域横向移动-PTT-漏洞&Kekeo&Ticket 1、漏…...

【前端】夯实基础 css/html/js 50个练手项目(持续更新)

文章目录 前言Day 1 expanding-cardsDay 2 progress-steps 前言 发现一个没有用前端框架的练手项目,很适合我这种纯后端开发夯实基础,内含50个mini project,学习一下,做做笔记。 项目地址:https://github.com/bradtr…...

ELK入门(四)-logstash

Logstash Logstash 是开源的服务器端数据处理管道,能够同时从多个来源采集数据,转换数据,然后将数据发送到您最喜欢的存储库中。 Logstash 能够动态地采集、转换和传输数据,不受格式或复杂度的影响。利用 Grok 从非结构化数据中…...

laravel-admin的3个开发细节调整

在使用laravel-admin开发的过程中,根据官方开发文档Laravel admin | laravel-admin基本都能实现想要的效果,这里补充3个文档上没有描述的细节 Laravel8命令行创建控制器调整 在laravel-admin中可以使用php artisan admin:make UserController --modelAp…...

Redis--原理篇-数据结构(底层)

Redis数据结构 动态字符串SDS IntSet 统一大小并且内存地址连续 为了方便寻址 Dict 基本结构 扩容 收缩 Ziplist(P150 后半部分再看) Quicklist skiplist(满足中间查询 RedisObject...

OpenAI发布Sora模型,可根据文字生成逼真AI视频

早在2022年11月30日,OpenAI第一次发布人工智能聊天机器人ChatGPT,随后在全世界掀起了人工智能狂潮,颠覆了一个又一个行业。在过去的一年多的时间里,chatGPT的强大功能改变了越来越多人的工作和生活方式,成为了世界上用…...

视频生成模型:构建虚拟世界的模拟器 [译]

原文:Video generation models as world simulators 我们致力于在视频数据上开展生成模型的大规模训练。具体来说,我们针对不同时长、分辨率和宽高比的视频及图像,联合训练了基于文本条件的扩散模型。我们采用了一种 Transformer 架构&#…...

法学论文降AI工具免费推荐:2026年法学毕业论文知网AIGC超标4.8元一次过完整方案

法学论文降AI工具免费推荐:2026年法学毕业论文知网AIGC超标4.8元一次过完整方案 论文AI率超标这件事,选错工具比不选工具更耽误事。 综合试用和口碑,法学论文降AI我主推嘎嘎降AI(www.aigcleaner.com),4.8…...

告别SU冲突!雷电模拟器9.0.20+新版Magisk Delta(狐狸面具)保姆级安装避坑指南

雷电模拟器9.0.20Magisk Delta深度适配指南:从冲突根源到完美兼容 当你在雷电模拟器9.0.20及以上版本尝试安装Magisk Delta(狐狸面具)时,是否遇到过Root权限反复失效、SU冲突提示不断弹出的困境?这背后隐藏着新版模拟器…...

免费额度哪家强?ESP32玩家实测八大国产大模型API(含通义千问、Kimi、DeepSeek)

ESP32开发者指南:八大国产大模型API横向评测与实战选型 当ESP32遇上大语言模型,会擦出怎样的火花?在物联网设备上直接运行AI交互功能,已经成为越来越多开发者的新选择。但面对众多国产大模型API,如何选择最适合ESP32项…...

实战揭秘:Obsidian加州海岸主题如何将macOS美学融入笔记生产力革命

实战揭秘:Obsidian加州海岸主题如何将macOS美学融入笔记生产力革命 【免费下载链接】obsidian-california-coast-theme A minimalist obsidian theme inspired by macOS Big Sur 项目地址: https://gitcode.com/gh_mirrors/ob/obsidian-california-coast-theme …...

TeamPass后台任务管理:自动化维护和清理操作手册

TeamPass后台任务管理:自动化维护和清理操作手册 【免费下载链接】TeamPass Collaborative Passwords Manager 项目地址: https://gitcode.com/gh_mirrors/te/TeamPass TeamPass作为一款协作密码管理器,其后台任务管理功能是确保系统高效稳定运行…...

PS4模拟器完整指南:shadPS4免费畅玩主机游戏教程

PS4模拟器完整指南:shadPS4免费畅玩主机游戏教程 【免费下载链接】shadPS4 PS4 emulator for Windows,Linux,MacOS 项目地址: https://gitcode.com/gh_mirrors/shad/shadPS4 还在寻找在电脑上体验PS4独占游戏的方法吗?shadPS4是一款免费开源的PS4…...

从“黑盒”到“白盒”:深入理解PHP伪协议php://input的底层机制与安全开发启示

从“黑盒”到“白盒”:深入理解PHP伪协议php://input的底层机制与安全开发启示 在Web安全领域,文件包含漏洞一直是攻击者青睐的攻击向量。而PHP伪协议php://input的巧妙利用,往往能让看似无害的文件包含操作演变为致命的远程代码执行漏洞。本…...

Linux信号机制深度解析:从内核实现到多线程编程实践

1. 信号的角色与核心概念 信号,这个在Unix/Linux世界里存在了超过三十年的机制,至今仍然是进程间通信和内核与进程交互的基石。简单来说,信号就是内核发给进程的一个简短通知,告诉它“有事情发生了”。你可以把它想象成你手机上的…...

56、CAN总线RC低通滤波器截止频率计算与实战

CAN总线RC低通滤波器截止频率计算与实战 一、一个让我熬夜三天的CAN通信故障 去年做某车载ECU项目,CAN总线在电机启动瞬间频繁丢帧。示波器抓波形,CAN_H对地毛刺高达8V,持续时间约200ns。团队里有人提议“加磁珠”,有人喊“上共模扼流圈”。我翻出TI的AN-2298应用笔记,发…...

如何彻底解决Cursor AI试用限制:开源技术方案深度解析

如何彻底解决Cursor AI试用限制:开源技术方案深度解析 【免费下载链接】cursor-free-vip [Support 0.45](Multi Language 多语言)自动注册 Cursor Ai ,自动重置机器ID , 免费升级使用Pro 功能: Youve reached your tri…...