samber/lo 库的使用方法:type

samber/lo 库的使用方法:type

samber/lo 是一个 Go 语言库,提供了一些常用的集合操作函数,如 Filter、Map 和 FilterMap。
这个库函数太多,因此我决定按照功能分别介绍,本文介绍的是 samber/lo 库中type相关的函数。汇总目录页面

IsNil

检查一个值是否为 nil,或者它是否是一个引用类型且其底层值为 nil。

var x int
IsNil(x)
// false 因为 x 是一个值类型var k struct{}
IsNil(k)
// falsevar i *int
IsNil(i)
// true 因为 i 是一个指针类型,且其底层值为 nilvar ifaceWithNilValue any = (*string)(nil)
IsNil(ifaceWithNilValue)
// true 因为 ifaceWithNilValue 是一个指针类型,且其底层值为 nil
ifaceWithNilValue == nil
// false 因为尽管 ifaceWithNilValue 的底层值是 nil,但 ifaceWithNilValue 本身并不是 nil。这是因为在 Go 中,一个接口值是由它的类型和值两部分组成的,只有当这两部分都是 nil 时,这个接口值才是 nil。在这个例子中,ifaceWithNilValue 的类型是 *string,所以它不是 nil。

ToPtr

返回一个指向值的指针的拷贝。

ptr := lo.ToPtr("hello world")
// *string{"hello world"}

EmptyableToPtr

如果值不为空,则返回一个指针拷贝,否则返回 nil。

ptr := lo.EmptyableToPtr[[]int](nil)
// nilptr := lo.EmptyableToPtr[string]("")
// nilptr := lo.EmptyableToPtr[[]int]([]int{})
// *[]int{}ptr := lo.EmptyableToPtr[string]("hello world")
// *string{"hello world"}

FromPtr

返回指针的值,如果指针为空则返回空值。

str := "hello world"
value := lo.FromPtr(&str)
// "hello world"value := lo.FromPtr[string](nil)
// ""

FromPtrOr

返回指针的值,如果指针为空则返回指定的值。

str := "hello world"
value := lo.FromPtrOr(&str, "empty")
// "hello world"value := lo.FromPtrOr[string](nil, "empty")
// "empty"

ToSlicePtr

返回值的指针拷贝的切片。

ptr := lo.ToSlicePtr([]string{"hello", "world"})
// []*string{"hello", "world"}

ToAnySlice

返回一个所有元素都映射到 any 类型的切片。

any 是一个类型参数约束,它在 Go 1.18 版本中引入,作为泛型的一部分, any 可以匹配任何类型。

elements := lo.ToAnySlice([]int{1, 5, 1})
// []any{1, 5, 1}

FromAnySlice

将一个 any 类型的切片转换为指定类型的切片。如果转换失败,则返回 false。

elements, ok := lo.FromAnySlice([]any{"foobar", 42})
// []string{}, falseelements, ok := lo.FromAnySlice([]any{"foobar", "42"})
// []string{"foobar", "42"}, true

Empty

返回空值

lo.Empty[int]()
// 0
lo.Empty[string]()
// ""
lo.Empty[bool]()
// false

IsEmpty

判断一个值是否为零值。

lo.IsEmpty(0)
// true
lo.IsEmpty(42)
// falselo.IsEmpty("")
// true
lo.IsEmpty("foobar")
// falsetype test struct {foobar string
}lo.IsEmpty(test{foobar: ""})
// true
lo.IsEmpty(test{foobar: "foobar"})
// false

IsNotEmpty

判断一个值是否不是零值。

lo.IsNotEmpty(0)
// false
lo.IsNotEmpty(42)
// truelo.IsNotEmpty("")
// false
lo.IsNotEmpty("foobar")
// truetype test struct {foobar string
}lo.IsNotEmpty(test{foobar: ""})
// false
lo.IsNotEmpty(test{foobar: "foobar"})
// true

Coalesce

返回第一个非空的参数。参数必须是可比较的。 如果没有非空参数,ok 为 false。

result, ok := lo.Coalesce(0, 1, 2, 3)
// 1 trueresult, ok := lo.Coalesce("")
// "" falsevar nilStr *string
str := "foobar"
result, ok := lo.Coalesce[*string](nil, nilStr, &str)
// &"foobar" true

汇总目录页面

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/696948.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Redis中的AOF重写到底是怎么一回事

首先我们知道AOF和RDB都是Redis持久化的方法。RDB是Redis DB,一种二进制数据格式,这样就是相当于全量保存数据快照了。AOF则是保存命令,然后恢复的时候重放命令。 AOF随着时间推移,会越来越大,因为不断往里追加命令。…

哪些行业适合做小程序?零售电商、餐饮娱乐、旅游酒店、教育生活、医疗保健、金融社交、体育健身、房产汽车、企管等,你的行业在其中么?

引言 在当今数字化时代,小程序成为了各行各业快速发展的数字工具之一。它的轻便、灵活的特性使得小程序在多个行业中找到了广泛的应用。本文将探讨哪些行业适合开发小程序,并介绍各行业中小程序的具体应用。 一、零售和电商 在当今数字化的商业环境中&…

C++ RAII

RAII定义 RAII(Resource Acquisition Is Initialization)是C编程中的一种重要的资源管理技术。它的核心思想是:资源的获取应该在对象的构造阶段进行,而资源的释放则应该在对象的析构阶段进行。通过利用C对象的生命周期和析构函数…

C#之WPF学习之路(2)

目录 控件的父类 DispatcherObject类 DependencyObject类 DependencyObject 类的关键成员和方法 Visual类 Visual 类的主要成员和方法 UIElement类 UIElement 类的主要成员和功能 FrameworkElement类 FrameworkElement 类的主要成员和功能 控件的父类 在 WPF (Windo…

谷粒商城篇章9 ---- P248-P261/P292-P294 ---- 消息队列【分布式高级篇六】

目录 1 消息队列(Message Queue)简介 1.1 概述 1.2 消息服务中两个重要概念 1.3 消息队列主要有两种形式的目的地 1.4 JMS和AMQP对比 1.5 应用场景 1.6 Spring支持 1.7 SpringBoot自动配置 1.7 市面上的MQ产品 2 RabbitMQ 2.1 RabbitMQ简介 2.1.1 RabbitMQ简介 2…

什么是Elasticsearch SQL

什么是Elasticsearch SQL 一. 介绍二. SQL 入门 前言 这是我在这个网站整理的笔记,有错误的地方请指出,关注我,接下来还会持续更新。 作者:神的孩子都在歌唱 一. 介绍 Elasticsearch SQL 是一个 X-Pack 组件,允许针对 Elasticsea…

通俗易懂理解G-GhostNet轻量级神经网络模型

一、参考资料 原始论文:[1] IJCV22 | 已开源 | 华为GhostNet再升级,全系列硬件上最优极简AI网络 二、G-GhostNet相关介绍 G-GhostNet 又称为 GhostNetV1 的升级版,是针对GPU优化的轻量级神经网络。 1. 摘要 GhostNetV1 作为近年来最流行…

Leetcode 611.有效三角形的个数

题目 给定一个包含非负整数的数组 nums &#xff0c;返回其中可以组成三角形三条边的三元组个数。 示例 1: 输入: nums [2,2,3,4] 输出: 3 解释:有效的组合是: 2,3,4 (使用第一个 2) 2,3,4 (使用第二个 2) 2,2,3示例 2: 输入: nums [4,2,3,4] 输出: 4提示: 1 < nums…

Android的LiveData

LiveData 是一种可观察的数据存储器类。与常规的可观察类不同&#xff0c;LiveData 具有生命周期感知能力&#xff0c;意指它遵循其他应用组件&#xff08;如 activity、fragment 或 service&#xff09;的生命周期。这种感知能力可确保 LiveData 仅更新处于活跃生命周期状态的…

ChatGPT在医学领域的应用与前景

标题&#xff1a; ChatGPT在医学领域的应用与前景 正文&#xff1a; 随着人工智能技术的不断进步&#xff0c;ChatGPT等语言模型在医学领域的应用逐渐深入&#xff0c;展现出其巨大的潜力和广阔的发展前景。作为一个高级的自然语言处理工具&#xff0c;ChatGPT能够理解和生成…

WPF 开发调试比较:Visual Studio 原生和Snoop调试控制台

文章目录 前言运行环境简单的WPF代码实现一个简单的ListBoxVisual Studio自带代码调试热重置功能测试实时可视化树查找窗口元素显示属性 Snoop调试使用Snoop简单使用调试控制台元素追踪结构树Visual/可视化结构树Logical/本地代码可视化树AutoMation/自动识别结构树 WPF元素控制…

基于springboot+vue的房屋租赁管理系统(前后端分离)

博主主页&#xff1a;猫头鹰源码 博主简介&#xff1a;Java领域优质创作者、CSDN博客专家、阿里云专家博主、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战&#xff0c;欢迎高校老师\讲师\同行交流合作 ​主要内容&#xff1a;毕业设计(Javaweb项目|小程序|Pyt…

【OpenAI官方课程】第四课:ChatGPT文本推断Summarizing

欢迎来到ChatGPT 开发人员提示工程课程&#xff08;ChatGPT Prompt Engineering for Developers&#xff09;&#xff01;本课程将教您如何通过OpenAI API有效地利用大型语言模型&#xff08;LLM&#xff09;来创建强大的应用程序。 本课程由OpenAI 的Isa Fulford和 DeepLearn…

手拉手Vite+Vue3+TinyVue+Echarts+TailwindCSS

技术栈springboot3hutool-alloshi-coreVue3viteTinyVueEchartsTailwindCSS软件版本IDEAIntelliJ IDEA 2022.2.1JDK17Spring Boot3.1hutool-all5.8.18oshi-core6.4.1Vue35.0.10vite5.0.10axios1.6.7echarts5.4.3 ECharts是一个使用 JavaScript 实现的开源可视化库&#xff0c;可…

快速搭建ARM64实验平台(QEMU虚拟机+Debian)

文章目录 前言一、实验平台介绍二、安装步骤2.1 安装工具2.2 下载仓库2.3 编译内核并制作根文件系统2.4 运行刚才编译好的ARM64版本的Debian系统2.5 在线安装软件包2.6 在QEMU虚拟机和主机之间共享文件 三、单步调试ARM64 Linux内核参考资料 前言 最近翻阅笨叔的《奔跑吧Linux…

go-zero微服务入门教程

go-zero微服务入门教程 本教程主要模拟实现用户注册和用户信息查询两个接口。 准备工作 安装基础环境 安装etcd&#xff0c; mysql&#xff0c;redis&#xff0c;建议采用docker安装。 MySQL安装好之后&#xff0c;新建数据库dsms_admin&#xff0c;并新建表sys_user&#…

【Git】 删除远程分支

Git 删除远程分支有以下几种方法 服务端UI工具 Git 的服务端图形化工具主要是 web 端。常用的有 GitHub、Gitea、Gutlab 等。 这些工具都提供了分支管理&#xff0c;可以直接在各服务端找到相关功能&#xff0c;谨慎删除。 客户端UI工具 Git 拥有诸多客户端 UI 工具&#x…

详细分析Python中的unittest测试框架

目录 1. 基本知识2. API2.1 断言2.2 setUp() 和 tearDown() 3. Demo 1. 基本知识 unittest 是 Python 标准库中的一个单元测试框架&#xff0c;用于编写和执行测试用例以验证代码的正确性 提供了一种结构化的方法来编写测试&#xff0c;使得测试代码更加模块化和易于维护 以…

【ACW 服务端】页面操作Java增删改查代码生成

版本: 1.2.2-JDK17-SNAPSHOT 项目地址&#xff1a;wu-smart-acw 演示地址&#xff1a;演示地址 admin/admin Java增删改查代码生成 找到对应菜单 选择你需要的数据实例 选择数据库 选择数据库表 选择客户端&#xff08;如果是本地ACW服务代码启动默认注册上的客户端ID是…

腾讯云主机Ubuntu22.04安装Odoo17

一、安装PostgreSQL16 参见之前的文章 Ubuntu22.04安装PostgreSQL-CSDN博客 二、安装Odoo17 本方案使用的nightly版的odoo&#xff0c;安装的都是最新版odoo wget -O - https://nightly.odoo.com/odoo.key | apt-key add - echo "deb http://nightly.odoo.com/17.0/n…