您好,作为一名资深软件工程师,我很高兴回答您的问题。
在 Golang 中,可以使用 struct 类型来限定 map 的 key。例如:
type Person struct {
Name string
Age int
}
func main() {
personMap := make(map[Person]string)
p1 := Person{Name: "Alice", Age: 20}
p2 := Person{Name: "Bob", Age: 30}
personMap[p1] = "Person 1"
personMap[p2] = "Person 2"
fmt.Println(personMap[p1]) // Output: Person 1
}
在上面的例子中,我们定义了一个 Person
结构体类型,并将其用作 map 的 key 类型。这样就可以通过比较两个 Person
实例的值来判断它们是否相等。
需要注意的是,如果结构体类型中包含指针或函数字段,则不能用作 map 的 key 类型。因为指针和函数是不可比较的类型,无法确定两个实例是否相等。
希望我的回答能够解决您的疑惑。如有任何问题,请随时提出。