将映射传递到导入的Golang包中的函数时出错
我需要发送一个映射到导入包中声明的函数,并不断收到此错误: ./main.go:21:无法在函数参数中使用m(类型映射[string]ticket)作为类型映射[string]some_package.ticket 这是golang GOPATH文件夹中main.go的代码:将映射传递到导入的Golang包中的函数时出错,go,namespaces,Go,Namespaces,我需要发送一个映射到导入包中声明的函数,并不断收到此错误: ./main.go:21:无法在函数参数中使用m(类型映射[string]ticket)作为类型映射[string]some_package.ticket 这是golang GOPATH文件夹中main.go的代码: package main import ( "time" sp "./some_package" ) type ticket struct { Timest
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)
}
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
}
这是golang GOPATH文件夹中some_package.go in/some_package的代码:
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)
}
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的值传递给导入的包函数,或者如何在函数内部获取map值
来自父包?
这是可能的还是有解决办法?即使这两种类型的名称相同并且包含相同的结构,但它们不是相同的类型。一个类型总是属于一个包,而这两个类型属于不同的包
因此,您不应该将类型
ticket
从some\u package
复制粘贴到main
,而应该是1。以大写字母命名,将其导出到其他包:键入Ticket struct
;二,。从main
使用它,比如make(map[string]sp.Ticket)
顺便说一下,“/some\u package”
作为包的路径是有效的,但不推荐使用。请参阅教程。感谢您的建议:)