缩短Go/Golang中导入的变量导出?

缩短Go/Golang中导入的变量导出?,go,Go,如果我有 // types.go type S string func (s *S) Lower() *S { *s = S(strings.ToLower(string(*s))) return s } ` 有没有办法将types.S(“asdf”)缩短为S(“asdf”) 有没有办法将来自其他文件的方法调用小写?e、 g.s.Lower()=>s.Lower() 只要该类型与您使用它的位置在不同的包中,而不使用点导入,就不会发生这种情况 是,如果另一个文件仍在同一个包中

如果我有

// types.go

type S string

func (s *S) Lower() *S {
    *s = S(strings.ToLower(string(*s)))
    return s
}
`

  • 有没有办法将types.S(“asdf”)缩短为S(“asdf”)

  • 有没有办法将来自其他文件的方法调用小写?e、 g.s.Lower()=>s.Lower()

  • 只要该类型与您使用它的位置在不同的包中,而不使用点导入,就不会发生这种情况

  • 是,如果另一个文件仍在同一个包中。否则,不会,因为这样就不会导出该函数(对其他包可见)。这是围棋大会


  • 大多数情况下不建议使用它,但您可以执行
    导入。“u/types”
    和所有类型,然后跳过类型前缀
    将所有公共符号导入到您的软件包中,允许您调用它们,就好像它们是软件包的本地符号一样。

    1。如果所有
    main()
    代码与
    types
    在同一个包中,则不需要包名。(您可以编写types.Main并从主包中调用它)。
    // in another file
    
    import "u/types"
    
    func main() {
        s := types.S("asdf")
        if s == "asdf" {
            s.Lower()
        }
    }