猿问

确定 var 是否为自定义类型

如何确定传递给我的 Func 的 var 是否实际上是我想要的类型?


我有一个自定义类型


type Name string

和一堆那种类型的常量


const Fred Name = "fred"

并且我有一个函数,我需要禁止除自定义类型之外的任何其他类型的输入:


func MyFunc(name1 Name, name2 Name) (*Person, error) {

//bunch of stuff

}

我如何在我的 func 中检查 name1 和 name2 不是传递给 func 的字符串,而是我已经在我的类型 ex 中定义的常量:


p, err := MyFunc(Fred,Albert) //What i want

p, err := MyFunc("fred","albert") //What i dont want to happen

如果不能回答我的问题,我如何才能像 Golang 中的 Enum 一样制作一个有意义的类型并限制其他人使用我定义的那种类型


牛魔王的故事
浏览 160回答 2
2回答

SMILET

让您的类型实现一个未导出的接口type Name stringtype Private interface{     private()}func (n Name) private() {}func MyFunc(name1, name2 Private) (*Person, error) {    //bunch of stuff}
随时随地看视频慕课网APP

相关分类

Go
我要回答