Почему я не могу использовать структуру, определенную в другом пакете? - PullRequest
0 голосов
/ 15 января 2019

Я не могу использовать структуру в package main, которая была определена в другом пакете. Обратите внимание, что я правильно импортирую другой пакет

Я назвал структуру и ее поля, начинающиеся с заглавной буквы, потому что я прочитал это на Голанге, именно так мы указываем, что это экспортируемое поле. Хотя это не требуется, если пакет импортирован.

fsm.go

package fsm

import (
"fmt"
"strings"
 )
// EKey is a struct key used for storing the transition map.
type EKey struct {
// event is the name of the event that the keys refers to.
Event string

// src is the source from where the event can transition.
Src string
}

test.go

package main

import (
"encoding/json"
"fmt"

"github.com/looplab/fsm"
) 
func main(){
    Transitions := make(map[EKey]string) 
}

Error: undefined EKey

Ответы [ 3 ]

0 голосов
/ 15 января 2019

попробуйте

package main

import (
"encoding/json"
"fmt"

"github.com/looplab/fsm"
) 
func main(){
    Transitions := make(map[fsm.EKey]string) 
}
0 голосов
/ 15 января 2019

Вы должны обратиться к своей структуре, используя fsm.EKey

Если вы хотите импортировать его в локальное пространство имен, вам нужно поставить точку перед путем импорта.

import (
   // ....
   . "github.com/looplab/fsm"
)

Теперь вы можете ссылаться на свою структуру как EKey

0 голосов
/ 15 января 2019

Вы должны сначала импортировать пакет, чьи идентификаторы вы хотите сослаться на:

import "path/to/fsm"

Как только вы это сделаете, имя пакета fsm станет новым идентификатором в вашем файловом блоке , и вы сможете ссылаться на его экспортированные идентификаторы (идентификаторы, которые начинаются с заглавной буквы письмо), используя квалифицированный идентификатор , который packagename.IdentifierName выглядит следующим образом:

Transitions := make(map[fsm.EKey]string)

См. Связанный вопрос: Получение пакета без ошибки селектора

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