字串切片去重

PHP_LHF發表於2022-02-08

字串切片去重

使用sort.String 方法對切片進行排序
使用發射機制 對切片進行排序
去重前的排序很重要

package main

import (
    "fmt"
    "reflect"
    "sort"
)

func main() {
    b := []string{"12", "a", "b", "c", "a", "12"}
    fmt.Println("去重前 ==>", b)
    // 輸出結果 [12 a b c a 12]
    fmt.Println("去重後 ==>", Duplicate(b))
    // 輸出結果 [12 a b c]

    // 如果是int 那麼使用 sort.Ints方法
    //c := []int{1, 1, 2, 4, 6, 7, 8, 4, 3, 2, 5, 6, 6, 8}
    //sort.Ints(c)
    //fmt.Println(DeleteDuplicateValue(c))
}
func Duplicate(a []string) (ret []interface{}) {
    sort.Strings(a)
    va := reflect.ValueOf(a)
    for i := 0; i < va.Len(); i++ {
        if i > 0 && reflect.DeepEqual(va.Index(i-1).Interface(), va.Index(i).Interface()) {
            continue
        }
        ret = append(ret, va.Index(i).Interface())
    }
    return ret
}
本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章