去语言包结构

时间:2014-02-06 23:25:38

标签: go

我正在努力学习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})
}

所以,问题是:

  1. 我读到我需要在每个包文件夹中都有一个文件package.go,是吗?

  2. 如果是,请在numbers.go内,如何导入rational.goreal.gocomplex.go

  3. 然后,有可能有类似的东西:

    // real.go
    package numbers
    
    type Real struct {
        Number float64
    }
    
  4. ...并在主要做fmt.Println(numbers.Real{2.0})

1 个答案:

答案 0 :(得分:10)

首先:您的安装程序错过了文件夹src:它应该是`$ GOPATH / src /github.com /..."

第二:不要使用相对进口。只是不要这样做。导入包裹号码,例如import "github.com/username/projectname/number"

问题:

  1. 没有。如果您将文件夹中的Go文件合并到一个包中,但您没有强制将包放入所有文件夹。

  2. 所有文件rational.gocomplex.goreal.go通常都以package numbers开头。这些都是包裹编号的一部分,您可以包含文件,但包裹。无需导入当前包。所以:不。