我需要将地图发送到导入包中声明的函数,并不断收到此错误:
./ main.go:21:不能使用m(类型map [string] ticket)作为类型map [string] some_package.ticket in function argument
这是golang GOPATH文件夹中main.go的代码:
package main
import (
"time"
sp "./some_package"
)
type ticket struct {
Timestamp int64
Identification_number int
}
var m map[string]ticket
func main() {
humans := 10
m = make(map[string]ticket)
m["ticket1"] = ticket{time.Now().Unix(), 1234}
sp_ := sp.New(humans)
sp_.SetTicket(m)
}
这是golang GOPATH文件夹中/ some_package中some_package.go的代码:
package some_package
type park struct{
card map[string]ticket
people int
}
type ticket struct {
Timestamp int64
Identification_number int
}
func (p *park) SetTicket(m map[string]ticket)(){
}
func New(humans int)(p *park){
p.card = make(map[string]ticket)
p.people = humans
return p
}
如何将地图的值传递给导入的包函数或获取函数内的map值 来自父包? 这甚至可能还是有解决方法?
答案 0 :(得分:3)
尽管这两种类型的名称相同且包含相同的结构,但它们的类型不同。类型始终属于包,这两种类型属于不同的包。
因此,您不应该将ticket
类型从some_package
复制到main
,而是通过将其命名为大写来将其导出到其他包:type Ticket struct
; 2.从main
make(map[string]sp.Ticket)
开始使用它。