只允许传递给 func 指针,而不是值
Allow pass to func only pointer, not values
我想只允许传递给 func 指向结构的指针,限制值。可能吗?
我想做的事情:
Foo(&Bar{}) // allowed
Foo(Bar{}) // IDE/compilation error
实际上我正在使用像 func Foo(bar any)
这样的签名,它允许将任何接口和类型传递给函数,当然,所以在某些情况下它可能会导致问题。
可以传递给这个函数的类型数量应该不受限制,我不想使用特定的接口等。也许这可以用泛型来实现?但我不确定如何正确地做到这一点。
我正在使用 go 1.18。
是的,您可以像这样使用泛型:
func Foo[T any](t *T){
…
}
我想只允许传递给 func 指向结构的指针,限制值。可能吗?
我想做的事情:
Foo(&Bar{}) // allowed
Foo(Bar{}) // IDE/compilation error
实际上我正在使用像 func Foo(bar any)
这样的签名,它允许将任何接口和类型传递给函数,当然,所以在某些情况下它可能会导致问题。
可以传递给这个函数的类型数量应该不受限制,我不想使用特定的接口等。也许这可以用泛型来实现?但我不确定如何正确地做到这一点。
我正在使用 go 1.18。
是的,您可以像这样使用泛型:
func Foo[T any](t *T){
…
}