@reus

Импорт пакетов в GO?

Не пойму в чем проблема. пишу по туториалу приложение. При попытке вызвать go run main.go получаю:
# command-line-arguments
./main.go:12: undefined: article
./main.go:49: undefined: articleList
./main.go:54: undefined: articleList

Походу []article берется из файла models.article.go
// models.article.go

package main

type article struct {
	ID      int    `json:"id"`
	Title   string `json:"title"`
	Content string `json:"content"`
}

// For this demo, we're storing the article list in memory
// In a real application, this list will most likely be fetched
// from a database or from static files
var articleList = []article{
	article{ID: 1, Title: "Article 1", Content: "Article 1 body"},
	article{ID: 2, Title: "Article 2", Content: "Article 2 body"},
}

// Return a list of all the articles
func getAllArticles() []article {
	return articleList
}

Пытался добавить в main.go import model
import (
	"github.com/gin-gonic/gin"
	"main/model"
	"net/http"
	"net/http/httptest"
	"os"
	"testing"
)

Но выдает ошибку:
pc2@pc-System:~/work/src/main$ go run main.go
/home/pc2/work/src/main/main.go:5:2: import "main/models" is a program, not an importable package

Эм.. и что с эти делать?
  • Вопрос задан
  • 3082 просмотра
Решения вопроса 2
@PapaStifflera
Родился, вырос...
reus а с какого перепуга у вас содержимое папок models и handlers находится в пакете main? это где так учат писать?
models - package models
handlers - package handlers
ну и секцию imports поправить в соответствии с...
Ответ написан
Комментировать
Когда вы запускаете программу через go run main.go, то компилируется только один файл, main.go. На остальные файлы go не обращает внимания.
Вам нужно разместить проект в $GOPATH и собирать через go build, тогда файлы, находящиеся в одной папке будут считаться частью одного пакета.
go run предназначен для быстрого запуска небольших одиночных файлов
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@reus Автор вопроса
Build не помогла
pc2@pc-System:~/work/src/main$ go build main.go
# command-line-arguments
./main.go:11: undefined: article
./main.go:48: undefined: articleList
./main.go:53: undefined: articleList

pc2@pc-System:~/work/src/main$ go env
GOARCH="amd64"
GOBIN="/home/pc2/work/bin"
GOEXE=""
GOHOSTARCH="amd64"
GOHOSTOS="linux"
GOOS="linux"
GOPATH="/home/pc2/work"
GORACE=""
GOROOT="/home/pc2/go"
GOTOOLDIR="/home/pc2/go/pkg/tool/linux_amd64"
GO15VENDOREXPERIMENT="1"
CC="gcc"
GOGCCFLAGS="-fPIC -m64 -pthread -fmessage-length=0"
CXX="g++"
CGO_ENABLED="1"

вот репозиторий https://bitbucket.org/oreol/golang_err
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы