去语言包结构

我正在努力学习Go并遵循现有的惯例,但是,作为每个惯例,你需要先使用它们,然后再使用它们,经过一些研究,我没有找到我对以下问题的确切答案:

我在$GOPATH中设置了一个项目,遵循类似这样的结构:

$GOPATH/
  github.com/
    username/
      projectname/
        main.go
        numbers/
          rational.go
          real.go
          complex.go

我的主要是:

package main

import(
"fmt"
"./numbers"
)

func main() {
    fmt.Println(numbers.Real{2.0})
}

所以,问题是:

>我读到我需要在每个包文件夹中都有一个文件package.go,是吗?
>如果是这样,在numbers.go里面,我将如何导入rational.go,real.go和complex.go?
>然后,有可能有类似的东西:

// real.go
package numbers

type Real struct {
    Number float64
}

…并在主要做fmt.Println(numbers.Real {2.0})?

最佳答案
第一:你的安装程序错过了文件夹src:它应该是`$GOPATH / src / github.com / …“

第二:不要使用相对进口.只是不要这样做.导入包编号,如import“github.com/username/projectname/number”

对你的问题:

>否.如果您将文件夹中的Go文件合并到一个包中,但您没有强制将包放入所有文件夹中.
>所有文件rational.go,complex.go和real.go通常都以包号开头.这些都是包号的一部分,您不包含文件而是包.无需导入当前包.所以不行.
>是的

转载注明原文:去语言包结构 - 代码日志