go语言指针数组给它降序排序

什么是go语言指针数组

指针数组是一个数组,其中的每个元素都是一个指针。在go语言中,指针数组可以定义为包含指针的数组。与普通数组不同,指针数组中存储的是指针变量的地址,而不是实际的值。指针数组可以存储数据类型不同的指针。

降序排序指针数组

降序排序指针数组可以使用sort包中的Sort函数进行排序。首先,需要定义一个排序函数,它将比较两个指针的值。在这个函数中,我们可以使用指针访问实际的值,然后比较它们。接着,我们需要将这个排序函数传递给sort包中的Sort函数进行排序。

示例代码

下面是一个简单的示例代码,演示如何利用go语言指针数组进行降序排序。

package main

import (
    "fmt"
    "sort"
)

func main() {
    var arr [5]*int
    var a int = 12
    var b int = 23
    var c int = 3
    var d int = 35
    var e int = 19

    arr[0] = &a
    arr[1] = &b
    arr[2] = &c
    arr[3] = &d
    arr[4] = &e

    fmt.Printf("Before Sorting: %v\n", *arr[0])
    printArr(&arr)

    sort.Sort(sort.Reverse(ByValue(arr)))

    fmt.Printf("After Sorting: %v\n", *arr[0])
    printArr(&arr)
}

func printArr(arr *[5]*int) {
    for i := 0; i < len(arr); i++ {
        fmt.Printf("%v ", *arr[i])
    }
    fmt.Println()
}

type ByValue [5]*int

func (a ByValue) Len() int           { return len(a) }
func (a ByValue) Swap(i, j int)      { a[i], a[j] = a[j], a[i] }
func (a ByValue) Less(i, j int) bool { return *a[i] > *a[j] }

在上面的示例代码中,我们先定义了一个名为ByValue的自定义类型。这个类型实现了Sorter接口的三个方法:Len、Swap和Less,它们的作用分别是获取排序对象长度、交换两个元素的值和比较两个元素的大小。在Less方法中,我们比较两个指针所指向的实际值大小,并返回比较结果。最后,我们将排序函数传递给sort包中的Sort函数,并打印排序前后的结果。

本文来自投稿,不代表亲测学习网立场,如若转载,请注明出处:https://www.qince.net/golang-u299.html

郑重声明:

本站所有内容均由互联网收集整理、网友上传,并且以计算机技术研究交流为目的,仅供大家参考、学习,不存在任何商业目的与商业用途。 若您需要商业运营或用于其他商业活动,请您购买正版授权并合法使用。

我们不承担任何技术及版权问题,且不对任何资源负法律责任。

如遇到资源无法下载,请点击这里失效报错。失效报错提交后记得查看你的留言信息,24小时之内反馈信息。

如有侵犯您的版权,请给我们私信,我们会尽快处理,并诚恳的向你道歉!

(0)
上一篇 2023年5月2日 上午2:08
下一篇 2023年5月2日 上午2:08

猜你喜欢