如何在Golang中为字符串类型创建方法

时间:2019-01-24 13:01:07

标签: go

我打算为字符串类型创建一些方法扩展。

我需要将所有扩展方法写入一个单独的包中。

这是我的阶层。

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的其他问题中找到了一些答案,但他们没有完全讨论字符串类型以及在其他程序包文件中使用该方法。

1 个答案:

答案 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())
}

一个可执行示例,所有示例均位于同一文件中:

https://play.golang.org/p/z_LcTZ6Qvfn