一尘不染

Go语言包结构

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在每个package文件夹中都有一个文件,对吗?

  2. 如果是这样,在内部numbers.go,我将如何导入rational.goreal.go以及complex.go

  3. 然后,是否可能会有类似的内容:

        // real.go
    package numbers

    type Real struct {
        Number float64
    }

…并且主要是做fmt.Println(numbers.Real{2.0})什么的?


阅读 303

收藏
2020-07-02

共1个答案

一尘不染

首先:您的安装程序src缺少文件夹:应该是$ GOPATH / src /github.com / …”

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

对您的问题:

  1. 否。如果您的文件夹中有Go文件,它们会合并到一个程序包中,但是您不必强迫将程序包放入所有文件夹中。

  2. 所有文件rational.gocomplex.go并且real.go通常会下手package numbers。都是包号的一部分,您 包括文件,而是包。当前软件包无需导入。所以不行。

2020-07-02