为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Go
蝴蝶不菲 2023-06-01 15:14:38
我无法使用package main在不同包中定义的结构。请注意,我正在正确导入其他包我以大写字母开头命名结构及其字段,因为我在 Golang 中读到,这就是我们指示它是导出字段的方式。尽管如果包是导入的则不需要。fsm.gopackage fsmimport ("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}测试.gopackage mainimport ("encoding/json""fmt""github.com/looplab/fsm") func main(){    Transitions := make(map[EKey]string) }Error: undefined EKey
查看完整描述

3 回答

?
qq_笑_17

TA贡献1818条经验 获得超7个赞

您必须首先导入要引用其标识符的包:

import "path/to/fsm"

执行此操作后,包名称将成为文件块fsm中的新标识符,您可以使用限定标识符引用其导出的标识符(以大写字母开头的标识符),如下所示:packagename.IdentifierName

Transitions := make(map[fsm.EKey]string)
查看完整回答
反对 回复 2023-06-01
?
慕码人8056858

TA贡献1803条经验 获得超6个赞

您需要使用来引用您的结构fsm.EKey


如果要将其导入本地名称空间,则需要在导入路径前加一个点。


import (

   // ....

   . "github.com/looplab/fsm"

)

现在您可以直接将您的结构称为EKey


查看完整回答
反对 回复 2023-06-01
?
不负相思意

TA贡献1777条经验 获得超10个赞

尝试这个


package main


import (

"encoding/json"

"fmt"


"github.com/looplab/fsm"

func main(){

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

}


查看完整回答
反对 回复 2023-06-01
  • 3 回答
  • 0 关注
  • 104 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信