将映射传递给导入的 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值 来自父包? 这甚至可能还是有解决方法?

尽管这两种类型的名称相同并且包含相同的结构,但它们不是同一类型。一个类型总是属于一个包,这两个类型属于不同的包。

因此,您不应将类型 ticketsome_package 复制粘贴到 main,而是 1. 通过以大写命名将其导出到其他包:type Ticket struct;和 2. 从 main 使用它,例如 make(map[string]sp.Ticket).