gpt4 book ai didi

go - 如何将函数扩展到 Golang 中的导入类型

转载 作者:IT王子 更新时间:2023-10-29 02:25:14 26 4
gpt4 key购买 nike

我有一个导入的类型

type ExternalType struct {
quantity int
}


type ExternalArray []*ExternalType

我希望能够为 ExternalArray 实现排序接口(interface),以便按数量对其进行排序。

但是,我不确定我该怎么做?

一个具体的例子是这样的:

https://play.golang.org/p/bEPtJ8NHQK

最佳答案

sort.Interface定义了三个必须实现的方法:

// Len is the number of elements in the collection.
Len() int

// Less reports whether the element with
// index i should sort before the element with index j.
Less(i, j int) bool

// Swap swaps the elements with indexes i and j.
Swap(i, j int)

在这种情况下,这看起来像:

type ExternalType struct {
quantity int
}

type ExternalArray []*ExternalType

func (ea ExternalArray) Len() int {
return len(ea)
}

func (ea ExternalArray) Less(i, j int) bool {
return ea[i].quantity < ea[j].quantity
}

func (ea ExternalArray) Swap(i, j int) {
ea[i], ea[j] = ea[j], ea[i]
}

为了进行排序,您可以使用 sort.Sort ,例如:

arr := ExternalArray{
&ExternalType{quantity: 33},
&ExternalType{quantity: 44},
&ExternalType{quantity: 22},
&ExternalType{quantity: 11},
}

sort.Sort(arr)
// `arr` is now sorted :-)

Here是 Playground 上的一个工作示例。

关于go - 如何将函数扩展到 Golang 中的导入类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35442911/

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