如何确定传递给我的 Func 的 var 是否真的是我想要的类型?
我有一个自定义类型
type Name string
和一堆该类型的常量
const Fred Name = "fred"
我有一个函数,我需要禁止除我的自定义类型 ex 之外的任何其他类型的输入:
func MyFunc(name1 Name, name2 Name) (*Person, error) {
//bunch of stuff
}
我如何在我的 func 中检查 name1 和 name2 不是传递给 func 的字符串,而是我已经在我的类型 ex 中定义的 const:
p, err := MyFunc(Fred,Albert) //What i want
p, err := MyFunc("fred","albert") //What i dont want to happen
如果不能回答我的问题,我如何才能像 Golang 中的枚举一样创建一个有意义的类型并限制其他人使用我定义的类型
最佳答案
让你的类型实现一个不导出的接口(interface)
type Name string
type Private interface{
private()
}
func (n Name) private() {}
func MyFunc(name1, name2 Private) (*Person, error) {
//bunch of stuff
}
关于types - 确定 var 是否为自定义类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26071173/