gpt4 book ai didi

go - 如何使两个对象具有可比性

转载 作者:数据小太阳 更新时间:2023-10-29 03:29:51 25 4
gpt4 key购买 nike

我将两个不同结构的对象传递给一个函数,在该函数中它与保存为 interface {} 类型的现有对象进行比较。

在下面,我怎样才能使两个对象具有相等性 ===

在这次尝试中,与 bar 的比较工作正常,但与 foo 相比它抛出一个 panic 错误,尽管两个对象都是结构类型

Go Playground

package main

import "fmt"

type Foo struct {
TestMethod func(str string)
}

type Bar struct {}

type IQux interface {
Compare(object interface{}) bool
}

type Qux struct {
Method func(str string)
Reference interface{}
}

func (qux Qux) Compare(object interface{}) bool {
return object == qux.Reference
}

func testMethod(str string) {
fmt.Println(str)
}

func main() {
foo := Foo{TestMethod:testMethod}
bar := Bar{}

ob := &Qux{Method: foo.TestMethod, Reference: foo}

ob.Compare(bar) // works fine
ob.Compare(foo) // panic: runtime error: comparing uncomparable type main.Foo
}

最佳答案

你有一点错别字,试试看:

package main

import "fmt"

type Foo struct {
TestMethod func(str string)
}

type Bar struct {}

type IQux interface {
Compare(object interface{}) bool
}

type Qux struct {
Method func(str string)
Reference interface{}
}

func (qux Qux) Compare(object interface{}) bool {
return object == qux.Reference
}

func testMethod(str string) {
fmt.Println(str)
}

func main() {
foo := &Foo{TestMethod:testMethod}
bar := Bar{}

ob := Qux{Method: foo.TestMethod, Reference: foo}

ob.Compare(bar) // works fine
ob.Compare(foo) // panic: runtime error: comparing uncomparable type main.Foo
}

关于go - 如何使两个对象具有可比性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42704857/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com