Go run / build не может найти исходные файлы - PullRequest
0 голосов
/ 05 апреля 2020

Я пытаюсь запустить простую программу hello world style, которая импортирует функцию печати из отдельного пользовательского пакета, но Go не может найти ее, несмотря на то, что установлена ​​правильная $GOPATH et c.

Чего не хватает, чтобы файл был поднят?

etherk1ll@ubuntu:~/Development/GoWorkSpace/src/sonarparser$ echo $GOPATH 
/home/etherk1ll/Development/GoWorkSpace/
etherk1ll@ubuntu:~/Development/GoWorkSpace/src/sonarparser$ pwd
/home/etherk1ll/Development/GoWorkSpace/src/sonarparser
etherk1ll@ubuntu:~/Development/GoWorkSpace/src/sonarparser$ ls
jsonparser.go  main.go
etherk1ll@ubuntu:~/Development/GoWorkSpace/src/sonarparser$ go run main.go 
main.go:5:2: cannot find package "sonarparser/jsonparser" in any of:
    /usr/local/go/src/sonarparser/jsonparser (from $GOROOT)
    /home/etherk1ll/Development/GoWorkSpace/src/sonarparser/jsonparser (from $GOPATH)

main.go

package main

import (
    "fmt"
    "jsonparser"
)

func main() {
    fmt.Println("Hello world 1")
    fmt.Println(jsonparser.HelloTwo)
}

jsonparser.go

package jsonparser

import "fmt"

func HelloTwo() {
    fmt.Println("Hello world 2")
}

1 Ответ

1 голос
/ 05 апреля 2020

Поскольку jsonparser.go и main.go находятся в одном пакете, Go требует, чтобы эти файлы имели одинаковое имя пакета. И поскольку вы определили основную функцию для выполнения, пакет должен быть «основным».

Шаг 1: Поэтому вам следует переименовать пакет jsonparser.go в main.

// jsonparser.go
package main

import "fmt"

func HelloTwo() {
    fmt.Println("Hello world 2")
}

Шаг 2: Вам необходимо обновить файл main.go, чтобы исправить путь импорта:

// main.go
package main

import (
    "fmt"
)

func main() {
    fmt.Println("Hello world 1")
    HelloTwo()
}

Шаг 3: Затем запустить следующую команду (необходимо включить все необходимые файлы в команде)

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