Go 中“Must”模式的内置助手

2024-01-06

是否有一个更内置的包装器来制作返回的函数(X, error)成功执行或中止,例如regexp.MustCompile?

我说的是像这样的东西 http://golang.org/src/pkg/text/template/helper.go?s=576:619,但更“内置”。


从 Go 1.18 开始我们可以定义类型化Must代替interface{}:

func Must[T any](obj T, err error) T {
    if err != nil {
        panic(err)
    }
    return obj
}

如何使用:https://go.dev/play/p/ajQAjfro0HG https://go.dev/play/p/ajQAjfro0HG

func success() (int, error) {
    return 0, nil
}

func fail() (int, error) {
    return -1, fmt.Errorf("Failed")
}

func main() {
    n1 := Must(success())
    fmt.Println(n1)
    var n2 int = Must(fail())
    fmt.Println(n2)
}

内部一定会失败main, when fail()返回非零error

你甚至可以定义Mustn对于超过 1 个返回参数,例如

func Must2[T1 any, T2 any](obj1 T1, obj2 T2, err error) (T1, T2) {
    if err != nil {
        panic(err)
    }
    return obj1, obj2
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Go 中“Must”模式的内置助手 的相关文章

  • 如何在golang中创建一个充满“000000...”数据的10MB文件?

    我打算在日志或磁盘队列等系统中使用 fdatasync 首先是在 ext4 等文件系统中创建一个带有 000000 的 10MB 文件 但我不知道如何正确地做到这一点 jnml fsc r630 src tmp SO 16797380 ls
  • 正确的文件扩展名或缩写是什么。 golang 的文本/模板?

    我正在考虑为其创建语法荧光笔 但我不知道这种特定类型模板的常规缩写 In 例子之一 http golang org pkg text template example Template helpers从文本 模板 godoc 中 它们引用
  • Golang:带有 JSON 负载的 http.NewRequest POST 返回错误 500

    我正在开发一个 API 库 有一个API端点 POST 当您发出curl命令时 它是 curl H X API TOKEN API TOKEN http interest graph getprismatic com text topic
  • Golang 正则表达式在字符串之间替换

    我有一些可能采用以下形式的字符串 MYSTRING MYSTRING n MYSTRING n MYSTRING randomstringwithvariablelength n 我希望能够将其正则表达式为MYSTRING foo 基本上替
  • os.Mkdir 和 os.MkdirAll 权限

    我正在尝试在程序开始时创建一个日志文件 我需要检查是否 log如果不创建目录 则目录存在 然后继续创建日志文件 好吧 我尝试使用os Mkdir 也os MkdirAll 但无论我在第二个参数中输入什么值 我都会得到一个没有权限的锁定文件夹
  • 如何关闭 gorm 1.20.0 中的数据库实例

    由于我没有在 Close 函数中找到 gorm 实例 任何帮助将不胜感激 dbURI fmt Sprintf user s password s dbname s port s sslmode s TimeZone s username p
  • 如何确定 go 中当前运行的可执行文件的完整路径?

    我一直在 osx 上使用这个函数 Shortcut to get the path to the current executable func ExecPath string var here os Args 0 if strings H
  • 为什么 gmail API 以纯文本形式发送 html 电子邮件?

    我正在尝试使用 gmail API 发送 html 电子邮件 但由于某些原因 它会随机以纯文本 文本形式发送电子邮件 谷歌似乎改变了我设置的内容类型标头 这有什么理由吗 电子邮件内容始终完全相同 正如我测试的那样 API 仍处于实验阶段吗
  • golang中通道缓冲容量0和1的区别

    我已将通道缓冲区大小设置为零 例如var intChannelZero make chan int 当从intChannelZero将被阻止 直到intChannelZero有价值 另外 我将通道缓冲区大小设置为 1 例如var intCh
  • 如何在 Go 中填写 void* C 指针?

    我正在尝试与 Go 中的一些 C 代码交互 使用 cgo 这一直相对简单 直到我遇到这种 相当常见 的情况 需要将指针传递给本身包含指向某些数据的指针的结构 我似乎无法弄清楚如何从 Go 中做到这一点 而不诉诸于将结构的创建放入 C 代码本
  • 在复杂的文件夹结构中进行测试

    我正在 golang 中构建一个设计模式存储库 为了运行所有测试 我使用这个 bash 脚本 有用 bin bash go test creational abstract factory go go test creational bui
  • GoLang 中的 HTML 部分

    我刚刚开始使用 Go 我想用它创建一个网络应用程序 我现在尝试的是以handlebarsjs 式的方式使用模板 我想将页眉和页脚从主页中取出 以便可以将它们注入到每个网页上 我当前的设置应该是解析主页 页眉和页脚 HTML 文件并缓存它们
  • Golang 结构体初始化

    有一个像这样的简单结构 type Event struct Id int Name string 这两种初始化方法有什么区别呢 e1 Event Id 1 Name event 1 e2 Event Id 2 Name event 2 为什
  • 有没有办法间歇性地执行重复性任务?

    有没有办法在 Go 中执行重复的后台任务 我在想类似的事情Timer schedule task delay period 在爪哇 我知道我可以用 goroutine 来做到这一点Time sleep 但我想要一些容易停止的东西 这是我得到
  • 我们如何在 Go 中使用通道来代替互斥锁?

    通道将通信 值的交换 与同步相结合 保证两个计算 goroutine 处于已知状态 如何使用 Google Go 中的通道来执行互斥量的功能 package main import sync var global int 0 var m s
  • 使用泛型:类型参数 T 不能与 == 进行比较

    我正在操场上玩 Go Generics 尝试编写一些通用数组函数 https gotipplay golang org p vS7f Vxxy2j https gotipplay golang org p vS7f Vxxy2j packa
  • 关于编写惯用的 Golang 的建议

    我正在掌握 Golang 的做事方式 首先是一些示例代码 package main import log os func logIt s string f os OpenFile errors log os O RDWR os O CREA
  • 如何读取 UDP 连接直至超时?

    我需要读取 UDP 流量 直到超时 我可以通过在 UDPConn 上调用 SetDeadline 并循环直到出现 I O 超时错误来做到这一点 但这看起来很黑客 基于错误条件的流量控制 下面的代码片段看起来更正确 但并没有终止 在生产中 这
  • Golang:如何在HTTP客户端的TLS配置中指定证书

    我有一个证书文件 该位置是 usr abc my crt我想将该证书用于我的 tls 配置 以便我的 http 客户端在与其他服务器通信时使用该证书 我当前的代码如下 mTLSConfig tls Config CipherSuites u
  • []interface{}{} 中的双大括号是什么意思

    请注意 这是格式为 的双花括号 而不是嵌套花括号 我也不确定这是空接口问题 切片问题还是结构问题 我猜它至少是其中两个的组合 我正在学习 Golang 并且已经达到了空接口 我发现我需要将空接口声明为 interface 或者例如 inte

随机推荐

  • Eclipse 调试器跳转到错误的返回语句

    我遇到了一个非常奇怪的情况 我正在 Android 2 1 平台上用 Java 通过 Eclipse Galileo 执行以下操作 Get gravity geomagnetic data to return to the caller f
  • Python:csvwriter 的问题

    我正在尝试将数据 主要是日期 布尔值和浮点数据类型 写入 CSV 文件格式 这是我的代码片段 Write data to file with open OUTPUT DIR output filename w as outputfile w
  • 合并提交第一和第二父母

    在涉及相对提交引用的 Udacity 课程中 它说 表示父提交 表示第一个父提交 和 之间的主要区别在于提交的时间 由合并创建 合并提交有两个父项 通过合并 commit 时 引用用于指示该文件的第一个父级 提交 而 2 表示第二个父级 第
  • NSPropertyListSerialization propertyListWithData 产生不兼容的转换警告/错误

    我正在尝试使用以下代码从 plist 中读取数据 NSString error NSData tempData NSData alloc initWithContentsOfFile Data plist NSDictionary temp
  • 如何通过维基百科 API 获取特定部分的文本

    我只想从维基百科页面中提取特定部分 例子 我想从维基百科文章 House 的 Parts 部分中提取文本 https en wikipedia org wiki House https en wikipedia org wiki House
  • 为什么 Javadoc 会生成不兼容的 XHTML?

    我刚刚将一些生成的 javadoc 粘贴到 eclipse 项目中 发现没有一个 HTML 是兼容的 甚至存在关闭从未打开过的标签的情况 有什么方法可以解决这个问题吗 也许是 遵守 选项 经过一番谷歌搜索后 我发现XHTML Doclet
  • Apache Spark 2.2 支持用户定义类型(UDT)吗?

    从这张 JIRA 票证中Spark 2 0 中隐藏 UserDefinedType https issues apache org jira browse SPARK 14155 似乎spark从2 0版本开始隐藏了UDT API 2 2
  • 如何制作具有三个角和阴影的图像视图

    如何制作这样一个只有三个角的图像 我尝试使用框架布局插入图像视图并使其成为原始图像的资源 添加另一个具有 3 个角的边框 src 的图像视图 但它不起作用 随着材料组件库 https github com material componen
  • Paypal 预付款和 PayFlow 与定期付款链接

    我们想在我们的应用程序中实现 Paypal 这就是我们需要的 经常性付款 试用期 优惠券代码 无需离开我们的页面即可付款 我们发现我们可以使用 Paypal Advanced Payment 和 PayFlow Link Gateway D
  • 获取对象可能为“null”。在 Angular 模板文件中

    在我的 Angular 应用程序中 我收到以下错误 对象可能为 空 问题是我收到此错误不是因为某些打字稿代码 而是因为这个 html 模板
  • HttpClient.PostAsync 第一次很慢

    经过一些基准测试后 我意识到每次启动应用程序时 第一个请求都会比下一个请求花费更多的时间 第一个平均为 500 毫秒 接下来的平均为 120 毫秒 我在 HttpClient 中设置了 cookie 并将 UseProxy 设置为 fals
  • 如何仅使用正则表达式验证 YouTube 嵌入链接

    我在我的网站中使用 YouTube 嵌入链接 我想验证该链接 就像用户粘贴嵌入链接以外的其他内容一样 那么它应该向我发出无效 URL 的警报 我已经使用了很多正则表达式 其中一些已经在我的代码中进行了评论 我只想要 YouTube 嵌入链接
  • ActiveMQ 获取入队/出队计数

    在DEBUG模式下 有一个ActiveMQ日志为 09 44 10 666 ActiveMQ Task 1 DEBUG org apache activemq broker region Queue 1687 queue demo toPa
  • 如何导航到 .java 文件而不是在类路径中指定源路径的 .class 文件?

    我在项目的 libs 文件夹下有一个预构建的 jar 以加快构建时间 但是 我想在导航到其包含的类之一时浏览该库的源代码 因此将以下行添加到 classpath 中
  • Spring Servicemix 骆驼中的 Sql 连接

    Spring Servicemix 骆驼中的 Sql 连接
  • 删除列中项目的百分比

    我正在尝试删除存在超过 90 NA 值的列 我已遵循以下操作 但我只得到一个值作为回报 不确定我可能做错了什么 我期待一个实际的数据框 我尝试将 as data frame 放在前面 但这也是错误的 领英帖子 删除缺失超过 x 的列 行 h
  • 未捕获 Google 地图信息窗口中的点击事件

    使用 Google Map v2 我希望能够在单击 GMarker 信息窗口中的文本时触发功能 foo click myFunction marker openInfoWindowHtml span class myText span 不起
  • 字符串匹配技术

    以下字符串被视为相等 我怎样才能匹配这样的东西 Hazard Const Company hazard construction company PETERSON CHASE GENERAL ENGINEERING CONSTRUCTION
  • 获取 UITextView 中的当前段落?

    我想检测当前段落 这是到目前为止我的代码 但效果不太好 假设我有 3 个段落 当光标位于它们之间时 它会选择下一个段落 这是不对的 有一个更好的方法吗 通过这段代码 我想检测当前段落 然后更改该段落的字体 然后继续使用该字体书写 func
  • Go 中“Must”模式的内置助手

    是否有一个更内置的包装器来制作返回的函数 X error 成功执行或中止 例如regexp MustCompile 我说的是像这样的东西 http golang org src pkg text template helper go s 5