我打算为字符串类型创建一些方法扩展。
我需要将所有扩展方法写入一个单独的包中。
这是我的阶层。
root
| main.go
| validation
| validate.go
在我想要的main.go
上,"abcd".Required()
main.go
package main
import (
"fmt"
"./validation"
)
func main() {
fmt.Println( "abcd".Required() )
}
validate.go
package validation
func (s string) Required() bool {
if s != "" {
return true
}
return false
}
当我运行它时,会出现错误。
错误
cannot define new methods on non-local type string
我在StackOverflow的其他问题中找到了一些答案,但他们没有完全讨论字符串类型以及在其他程序包文件中使用该方法。
答案 0 :(得分:6)
在您的validate.go中创建一个新类型String
:
package validation
type String string
func (s String) Required() bool {
return s != ""
}
然后在您的主对象中使用validation.String
个对象:
package main
import (
"fmt"
"./validation"
)
func main() {
fmt.Println(validation.String("abcd").Required())
}
一个可执行示例,所有示例均位于同一文件中: