小编Nev*_*vus的帖子

Go 中可选参数的等效项

我正在将客户端从 python 移植到 API。原始实现使用可选参数作为

def createIntAttribute(attr_name, default_value=None, is_array=False)
Run Code Online (Sandbox Code Playgroud)

它在数据库上创建一个带有或不带有默认值的整数属性,如下所示:

createIntAttribute("numUsers")             # No default attribute
createIntAttribute("numUsers", 0)          # Default attribute of 0
Run Code Online (Sandbox Code Playgroud)

这在 Go 中如何实现?

我考虑过的一些方法是:

  • 使用 int 作为类型
    无法知道用户是否想要避免创建默认值或想要创建默认值 0
  • 使用指针每次使用都defaultValue *int
    需要&并且不支持文字
  • 使用结构体作为参数
    int 的默认值是 0 所以问题与第一种方法相同
  • 使用带有 value 和 isSet 属性的结构来包含可选参数
    每种类型的变量都需要一个结构。这可能可以使用泛型,但增加了 go 版本 > 1.18 的要求,
    用法是mypackage.NewOptionalStringArray([]string{"hello", "world"})
  • 使用可变参数函数func createIntAttribute(name string, optionals ...interface{})
    默认情况下不进行
    类型检查 自动完成不显示变量的名称和类型;在 vs code 中使用单独的参数会在我输入参数时显示参数的名称及其类型

实现这一点的最佳方法是什么?

go

2
推荐指数
1
解决办法
3067
查看次数

标签 统计

go ×1