go - golang中的多文件项目

标签 go

我有一个包含 2 个文件的项目:

enter image description here

这是我的 main.go 文件:

package main

import "fmt"
import "math"

func main() {
    xs := []float64{1, 2, 3, 4}
    avg := math.Average(xs)
    fmt.Println(avg)
}

和我的 math.go :

package math

func Average(xs []float64) float64 {
    total := float64(0)
    for _, x := range xs {
        total += x
    }
    return total / float64(len(xs))
}

但是当我这样做的时候:

> bussiere@kusanagi [06:44:01 PM] [~/Workspace/bdrun/TestPack/src]
> -> % go install .
> # _/home/bussiere/Workspace/bdrun/TestPack/src ./main.go:8:9: undefined: math.Average bussiere@kusanagi [06:47:12 PM]
> [~/Workspace/bdrun/TestPack/src]-> % go run main.go
> # command-line-arguments ./main.go:8:9: undefined: math.Average

怎么来的?

问候和感谢

最佳答案

你很接近。你有什么:

bin/
pkg/
  math.go
src/
  main.go

但这不是 go 二进制文件所期望的。 src 文件夹下应该是每个项目的文件夹:

src/
  myproject/
    math/
      math.go
    main.go

当你希望一个 go 文件位于不同的包中时,它应该位于与新包同名的文件夹中。您需要更新数学导入。 import "math" 将导入标准库数学文件。制作上面的树结构后,在您的 main.go 中尝试 import "myproject/math"

您不必担心 pkg 或 bin 文件夹。您通常不需要特意将任何东西放入其中。

关于go - golang中的多文件项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50104849/

相关文章:

go - 如何使用 gocql 执行 cql 文件?

pointers - 在结构中初始化字符串指针

go - Go 中联合的最佳实践

arrays - 如何将 []string 转换为 ...string

go - 如何调试“语法错误:{之前出现意外的分号或换行符”?

go - 从 Golang 中的二进制文件中读取 int16

Golang项目目录结构

google-app-engine - 在服务器端处理带有 "io.Pipe"的大文件上传

http - 如何让 Go 的 http.Server 闲置一段时间后退出?

mysql - 使用 INSERT IGNORE 检索警告