猿问

为什么我不能使用在不同包中定义的结构?

我无法使用package main在不同包中定义的结构。请注意,我正在正确导入其他包


我以大写字母开头命名结构及其字段,因为我在 Golang 中读到,这就是我们指示它是导出字段的方式。尽管如果包是导入的则不需要。


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

}

测试.go


package main


import (

"encoding/json"

"fmt"


"github.com/looplab/fsm"

func main(){

    Transitions := make(map[EKey]string) 

}

Error: undefined EKey


蝴蝶不菲
浏览 143回答 3
3回答

qq_笑_17

您必须首先导入要引用其标识符的包:import "path/to/fsm"执行此操作后,包名称将成为文件块fsm中的新标识符,您可以使用限定标识符引用其导出的标识符(以大写字母开头的标识符),如下所示:packagename.IdentifierNameTransitions := make(map[fsm.EKey]string)

慕码人8056858

您需要使用来引用您的结构fsm.EKey如果要将其导入本地名称空间,则需要在导入路径前加一个点。import (   // ....   . "github.com/looplab/fsm")现在您可以直接将您的结构称为EKey

不负相思意

尝试这个package mainimport ("encoding/json""fmt""github.com/looplab/fsm") func main(){    Transitions := make(map[fsm.EKey]string) }
随时随地看视频慕课网APP

相关分类

Go
我要回答