最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

GO語言對數(shù)組切片去重的實現(xiàn)

 更新時間:2022年04月20日 14:51:18   作者:抬頭看天空  
本文主要介紹了GO語言對數(shù)組切片去重的實現(xiàn),主要介紹了幾種方法,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

Go語言是2007年由Google開發(fā)的一種靜態(tài)強類型的編譯型語言,其語法結(jié)構(gòu)上與C非常接近。在垃圾回收、錯誤處理以及包庫方面比C要方便的多,因此從開發(fā)速度上來講比C要快的多,而運行速度也接近于C語言。以下實現(xiàn)GO語言對數(shù)組切片去重

1.go中沒有去重方法

自己實現(xiàn)

package main

import (
? ? "fmt"
)

func main() {
? ? s := []string{"hello", "world", "hello", "golang", "hello", "ruby", "php", "java"}

? ? fmt.Println(removeDuplicateElement(s)) //output: hello world golang ruby php java
}

func removeDuplicateElement(languages []string) []string {
? ? result := make([]string, 0, len(languages))
? ? temp := map[string]struct{}{}
? ? for _, item := range languages {
? ? ? ? if _, ok := temp[item]; !ok {
? ? ? ? ? ? temp[item] = struct{}{}
? ? ? ? ? ? result = append(result, item)
? ? ? ? }
? ? }
? ? return result
}

2.自定義一個適配多個切片類型的去重器

下面對嗎主要看

1.自定義sliceError結(jié)構(gòu)體并實現(xiàn)Error方法
2.最后default中返回sliceError中自動會調(diào)用Errors使轉(zhuǎn)換成error。

package common

import (
? ? "fmt"
)

type sliceError struct {
? ? msg string
}

func (e *sliceError) Error() string {
? ? return e.msg
}

func Errorf(format string, args ...interface{}) error {
? ? msg := fmt.Sprintf(format, args...)
? ? return &sliceError{msg}
}

func removeDuplicateElement1(originals interface{}) (interface{}, error) {
? ? temp := map[string]struct{}{}
? ? switch slice := originals.(type) {
? ? case []string:
? ? ? ? result := make([]string, 0, len(originals.([]string)))
? ? ? ? for _, item := range slice {
? ? ? ? ? ? key := fmt.Sprint(item)
? ? ? ? ? ? if _, ok := temp[key]; !ok {
? ? ? ? ? ? ? ? temp[key] = struct{}{}
? ? ? ? ? ? ? ? result = append(result, item)
? ? ? ? ? ? }
? ? ? ? }
? ? ? ? return result, nil
? ? case []int64:
? ? ? ? result := make([]int64, 0, len(originals.([]int64)))
? ? ? ? for _, item := range slice {
? ? ? ? ? ? key := fmt.Sprint(item)
? ? ? ? ? ? if _, ok := temp[key]; !ok {
? ? ? ? ? ? ? ? temp[key] = struct{}{}
? ? ? ? ? ? ? ? result = append(result, item)
? ? ? ? ? ? }
? ? ? ? }
? ? ? ? return result, nil
? ? default:
? ? ? ? err := Errorf("Unknown type: %T", slice)
? ? ? ? return nil, err
? ? }
}

補充:

通過map鍵的唯一性去重(推薦)

//通過map鍵的唯一性去重
func RemoveRepeatedElement(s []int) []int {
?? ?result := make([]int, 0)
?? ?m := make(map[int]bool) //map的值不重要
?? ?for _, v := range s {
?? ??? ?if _, ok := m[v]; !ok {
?? ??? ??? ?result = append(result, v)
?? ??? ??? ?m[v] = true
?? ??? ?}
?? ?}
?? ?return result
}

通過map鍵的唯一性去重

定義一個新切片(數(shù)組),存放原數(shù)組的第一個元素,然后將新切片(數(shù)組)與原切片
(數(shù)組)的元素一一對比,如果不同則存放在新切片(數(shù)組)中。

func RemoveRepeatedElement(arr []int) (newArr []int) {
?? ?newArr = make([]int, 0)
?? ?for i := 0; i < len(arr); i++ {
?? ??? ?repeat := false
?? ??? ?for j := i + 1; j < len(arr); j++ {
?? ??? ??? ?if arr[i] == arr[j] {
?? ??? ??? ??? ?repeat = true
?? ??? ??? ??? ?break
?? ??? ??? ?}
?? ??? ?}
?? ??? ?if !repeat {
?? ??? ??? ?newArr = append(newArr, arr[i])
?? ??? ?}
?? ?}
?? ?return
}

到此這篇關(guān)于GO語言對數(shù)組切片去重的實現(xiàn)的文章就介紹到這了,更多相關(guān)GO 數(shù)組切片去重內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:

相關(guān)文章

  • golang 實現(xiàn)struct、json、map互相轉(zhuǎn)化

    golang 實現(xiàn)struct、json、map互相轉(zhuǎn)化

    這篇文章主要介紹了golang 實現(xiàn)struct、json、map互相轉(zhuǎn)化,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-12-12
  • 玩轉(zhuǎn)Go命令行工具Cobra

    玩轉(zhuǎn)Go命令行工具Cobra

    這篇文章主要介紹了玩轉(zhuǎn)Go命令行工具Cobra,本文介紹了Cobra的最基本也是最常用的使用部分,但是Cobra仍然有很多優(yōu)秀的操作值得我們學(xué)習(xí),需要的朋友可以參考下
    2022-08-08
  • GoLang 中的隨機數(shù)的示例代碼

    GoLang 中的隨機數(shù)的示例代碼

    本篇文章主要介紹了GoLang 中的隨機數(shù)的示例代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-03-03
  • Go中recover與panic區(qū)別詳解

    Go中recover與panic區(qū)別詳解

    這篇文章主要介紹了Go中recover與panic區(qū)別詳解,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-11-11
  • GoLang實現(xiàn)日志收集器流程講解

    GoLang實現(xiàn)日志收集器流程講解

    這篇文章主要介紹了GoLang實現(xiàn)日志收集器流程,看日志是開發(fā)者平時排查BUG所必須的掌握的技能,但是日志冗雜,所以寫個小工具來收集這些日志幫助我們排查BUG,感興趣想要詳細了解可以參考下文
    2023-05-05
  • Go打印結(jié)構(gòu)體提升代碼調(diào)試效率實例詳解

    Go打印結(jié)構(gòu)體提升代碼調(diào)試效率實例詳解

    這篇文章主要介紹了Go打印結(jié)構(gòu)體提升代碼調(diào)試效率實例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2024-02-02
  • golang中一種不常見的switch語句寫法示例詳解

    golang中一種不常見的switch語句寫法示例詳解

    這篇文章主要介紹了golang中一種不常見的switch語句寫法,本文通過示例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-05-05
  • go語言中如何使用select的實現(xiàn)示例

    go語言中如何使用select的實現(xiàn)示例

    本文主要介紹了go語言中如何使用select的實現(xiàn)示例,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-05-05
  • Golang中unicode碼和中文的互相轉(zhuǎn)換函數(shù)使用

    Golang中unicode碼和中文的互相轉(zhuǎn)換函數(shù)使用

    這篇文章主要為大家介紹了Golang中unicode碼和中文的互相轉(zhuǎn)換函數(shù)使用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-09-09
  • go語言實戰(zhàn)之實現(xiàn)比特幣地址校驗步驟

    go語言實戰(zhàn)之實現(xiàn)比特幣地址校驗步驟

    這篇文章主要介紹了go語言實戰(zhàn)之實現(xiàn)比特幣地址校驗步驟,利用生產(chǎn)的隨機數(shù)采用橢圓加密算法生成公鑰,具體步驟實例代碼請參考下本文
    2021-05-05

最新評論

榕江县| 合作市| 治多县| 抚州市| 富锦市| 昌黎县| 香港 | 朝阳县| 瑞昌市| 邹城市| 眉山市| 上蔡县| 增城市| 义乌市| 芒康县| 潮州市| 颍上县| 巴南区| 芦溪县| 重庆市| 永善县| 朝阳区| 侯马市| 邳州市| 皋兰县| 永平县| 项城市| 扶风县| 邢台市| 合阳县| 丰顺县| 黔西县| 团风县| 高要市| 沅陵县| 中江县| 柳州市| 安国市| 平南县| 林西县| 西乌|