Несколько советов по Go и Gogland

Всем привет. Я новичок в Go и Gogland. У меня есть проект Проект Gogland

  1. В качестве пакета я выбираю "Run kind" - запускать не только основной файл, но и проект. Почему он не может найти основной пакет??
  2. Как импортировать пакет util.myprinter на main.go, чтобы использовать его??

Помогите мне, пожалуйста


person trashgenerator    schedule 26.03.2017    source источник


Ответы (1)


Во-первых, общая структура вашего рабочего пространства в Go кажется неправильной. Вам нужно сделать так, чтобы это выглядело примерно так:

D:
|-- go_projects
|    |-- bin
|    |-- pkg
|    |-- src 
|    |    |-- FirstSteps
|    |    |    |-- main.go
|    |    |    +-- util
|    |    |         +-- myprinter.go
|    |    |-- SecondProject
|    |    |-- ThirdProject
...

Во-вторых, ваш оператор import кажется пустым, я понятия не имею, как работает goglang, но если вы хотите использовать то, что находится в вашем файле myprinter.go, вам нужно будет импортировать пакет util, предполагая, что файл myprinter.go объявляет свой package как util в Топ.

// FirstSteps/main.go
package main

import (
    "FirstSteps/util"
)

func main() {
    util.MyPrinterFunc()
}

И, конечно же, чтобы иметь возможность использовать что-либо из util, сначала должно быть что-то...

// FirstSteps/util/myprinter.go
package util

func MyPrinterFunc() {
    // do stuff...
}

Редактировать: извините, изначально я не ответил на ваш вопрос. Вы получаете сообщение об ошибке Cannot find package 'main' из-за неправильной настройки рабочего пространства, о которой я уже упоминал. Package path указывает Gogland, где пакет, который вы хотите запустить, относительно каталога $GOPATH/src. Итак, после того, как вы правильно настроили свое рабочее пространство, вы должны установить Package path на FirstSteps, так как абсолютный путь к этому пакету будет $GOPATH/src/FirstSteps. Если позже вы захотите запустить пакет util, вы должны указать Package path как FirstSteps/util, чтобы gogland мог его найти.

person mkopriva    schedule 26.03.2017
comment
Спасибо большое. Но в gogland вам также нужно вызвать go get gotype - после этого import FirstSteps/util работает нормально. И GOPATH для проекта в настройках в этом случае должен быть d:/go_projects. Не так-то просто погрузиться — C++ был проще :) - person trashgenerator; 27.03.2017