Многофайловый проект на Голанге - PullRequest
0 голосов
/ 30 апреля 2018

У меня есть проект с 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)
}

и мое математическое слово:

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

Как получается?

С уважением и благодарностью

1 Ответ

0 голосов
/ 30 апреля 2018

Ты рядом. Что у вас есть:

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

Но это не то, что ожидает двоичный файл go. Под папкой src должна быть папка для каждого проекта:

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

Если вы хотите, чтобы файл go находился в другом пакете, он должен находиться в папке с тем же именем, что и новый пакет. Вам нужно будет обновить свой математический импорт. import "math" импортирует стандартный математический файл библиотеки. Попробуйте import "myproject/math" в вашем main.go после создания древовидной структуры выше.

Вам не нужно беспокоиться о папке pkg или bin. Обычно вам не нужно изо всех сил вкладывать в них что-либо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...