golang结构体方法当做回调函数
在Golang中,我们可以为一个结构体定义方法。如果将这个方法的名称作为参数传递给另一个函数,则可以将其作为回调函数使用。
比如说,我们想要对一个整数数组进行排序。我们可以定义一个结构体,其中的方法可以用于比较两个整数的大小。然后,我们可以将这个方法的名称传递给排序函数,让它作为回调函数来使用。
以下是一个示例代码:
```
type IntArray []int
func (arr IntArray) Len() int {
return len(arr)
}
func (arr IntArray) Less(i, j int) bool {
return arr[i] < arr[j]
}
func (arr IntArray) Swap(i, j int) {
结构体数组不能作为参数传递给函数 arr[i], arr[j] = arr[j], arr[i]
}
func main() {
arr := IntArray{5, 2, 4, 6, 1, 3}
// 使用自定义的 Less 方法进行排序
sort.Sort(arr)
fmt.Println(arr) // [1 2 3 4 5 6]
}
```
在这个例子中,我们定义了一个名为 `IntArray` 的结构体,并为它定义了三个方法: `Len()`、`Less()` 和 `Swap()`。这些方法分别对应了 `sort.Interface` 接口中的三个方法。
其中,`Less()` 方法用于比较两个整数的大小。我们可以将这个方法的名称作为参数传递给 `sort.Sort()` 函数,排序函数就可以使用它作为回调函数来进行比较。
最后,我们就可以通过自定义的方法来进行排序了。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论