将映射传递给导入的 Golang 包中的函数时出错
Error passing map to a function in imported Golang package
我需要将映射发送到在导入包中声明的函数,但一直收到此错误:
./main.go:21: cannot use m (type map[string]ticket) as type 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的值传递给导入的包函数或者在函数内部获取map值
来自父包?
这甚至可能还是有解决方法?
尽管这两种类型的名称相同并且包含相同的结构,但它们不是同一类型。一个类型总是属于一个包,这两个类型属于不同的包。
因此,您不应将类型 ticket
从 some_package
复制粘贴到 main
,而是 1. 通过以大写命名将其导出到其他包:type Ticket struct
;和 2. 从 main
使用它,例如 make(map[string]sp.Ticket)
.
我需要将映射发送到在导入包中声明的函数,但一直收到此错误:
./main.go:21: cannot use m (type map[string]ticket) as type 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的值传递给导入的包函数或者在函数内部获取map值 来自父包? 这甚至可能还是有解决方法?
尽管这两种类型的名称相同并且包含相同的结构,但它们不是同一类型。一个类型总是属于一个包,这两个类型属于不同的包。
因此,您不应将类型 ticket
从 some_package
复制粘贴到 main
,而是 1. 通过以大写命名将其导出到其他包:type Ticket struct
;和 2. 从 main
使用它,例如 make(map[string]sp.Ticket)
.