Golang 中自定义库会触发编译时错误吗?
Golang 中,调用时不可能触发编译时错误具有不带参数的可变参数的函数。语言规范认为函数调用 min() 是有效的。
但是,存在一种解决方法来强制传递至少一个参数。通过修改函数签名以包含非可变参数和可变参数,可能会生成编译时错误。
修改的函数签名:
func min(first int, rest ...int) int { // ... Same logic as before }
此签名需要至少一个参数(第一个)并允许多个附加参数(休息)。
用法:
// This is now a compile-time error min() // Valid calls min(1) min(1, 2) min(1, 2, -3)
注意:
如果只有一个参数,上述修改可以提高效率由于未创建切片而被传递。但是,仍然可以使用以下技术传递切片:
s := []int{1, 2, -3} min(s[0], s[1:]...) // Pass first element and sliced slice as variadic parameter
如果修改函数签名不可行,则运行时恐慌或应用程序退出是处理丢失参数的唯一选项。
以上是自定义 Go 库是否会因缺少可变参数函数参数而生成编译时错误?的详细内容。更多信息请关注PHP中文网其他相关文章!