欧美阿v视频在线大全_亚洲欧美中文日韩V在线观看_www性欧美日韩欧美91_亚洲欧美日韩久久精品

主頁 > 知識庫 > golang 刪除切片的某個元素及剔除切片內(nèi)的零值方式

golang 刪除切片的某個元素及剔除切片內(nèi)的零值方式

熱門標簽:仙桃400電話辦理 地圖標注免費定制店 寧波語音外呼系統(tǒng)公司 宿遷便宜外呼系統(tǒng)代理商 上海極信防封電銷卡價格 不封卡外呼系統(tǒng) 湛江crm外呼系統(tǒng)排名 鄭州智能語音電銷機器人價格 重慶慶云企業(yè)400電話到哪申請

看代碼吧~

func remove(slice []interface{}, elem interface{}) []interface{}{
    if len(slice) == 0 {
        return slice
    }
    for i, v := range slice {
        if v == elem {
            slice = append(slice[:i], slice[i+1:]...)
            return remove(slice,elem)
            break
        }
    }
    return slice
}
func removeZero(slice []interface{}) []interface{}{
    if len(slice) == 0 {
        return slice
    }
    for i, v := range slice {
        if ifZero(v) {
            slice = append(slice[:i], slice[i+1:]...)
            return removeZero(slice)
            break
        }
    }
    return slice
}
//判斷一個值是否為零值,只支持string,float,int,time 以及其各自的指針,"%"和"%%"也屬于零值范疇,場景是like語句
func IfZero(arg interface{}) bool {
    if arg == nil {
        return true
    }
    switch v := arg.(type) {
    case int, int32, int16, int64:
        if v == 0 {
            return true
        }
    case float32:
        r:=float64(v)
        return math.Abs(r-0)0.0000001
    case float64:
        return math.Abs(v-0)0.0000001
    case string:
        if v == "" || v == "%%" || v == "%" {
            return true
        }
    case *string, *int, *int64, *int32, *int16, *int8, *float32, *float64, *time.Time:
        if v == nil {
            return true
        }
    case time.Time:
        return v.IsZero()
    default:
        return false
    }
    return false
}

補充:golang刪除slice中特定條件的元素,優(yōu)化版

寫了兩種對一個slice中刪除特定元素的方法,并做了性能對比,在這里記錄一下。

假設我們的切片有0和1,我們要刪除所有的0,此處有三種方法:

第一種方法:

func DeleteSlice(a []int) []int{
 for i := 0; i  len(a); i++ {
  if a[i] == 0 {
   a = append(a[:i], a[i+1:]...)
   i--
  }
 }
 return a
}

解釋:這里利用常見的方法對slice中的元素進行刪除,注意刪除時,后面的元素前移,i應該后移一位。

第二種方法:

func DeleteSlice1(a []int) []int {
 ret := make([]int, 0, len(a))
 for _, val := range a {
  if val == 1 {
   ret = append(ret, val)
  }
 }
 return ret
}

解釋:這種方法最容易理解,重新使用一個slice,將不合理的過濾掉。缺點是需要開辟另一個slice的空間,優(yōu)點是容易理解,而且不對原來的slice進行操作。

第三種方法:

func DeleteSlice2(a []int) []int{
 j := 0
 for _, val := range a {
  if val == 1 {
   a[j] = val
   j++
  }
 }
 return a[:j]
}

解釋:這里利用一個index,記錄應該下一個有效元素應該在的位置,遍歷所有元素,當遇到有效元素,index加一,否則不加,最終index的位置就是所有有效元素的下一個位置。最后做一個截取就行了。這種方法會對原來的slice進行修改。

這里對三種方法做了性能測試,測試代碼如下:

package main 
import (
 "testing"
)
 
func handle(data []int) {
 return
}
const N = 100
 
func getSlice()[]int {
 a := []int{}
 for i := 0; i  N; i++ {
  if i % 2 == 0 {
   a = append(a, 0)
  } else {
   a = append(a, 1)
  }
 }
 return a
}
 
func BenchmarkDeleteSlice(b *testing.B) {
 for i := 0; i  b.N; i++ {
   data := DeleteSlice(getSlice())
   handle(data)
 }
}
 
func BenchmarkDeleteSlice1(b *testing.B) {
 for i := 0; i  b.N; i++ {
  data := DeleteSlice1(getSlice())
  handle(data)
 }
}
 
func BenchmarkDeleteSlice2(b *testing.B) {
 for i := 0; i  b.N; i++ {
  data := DeleteSlice2(getSlice())
  handle(data)
 }
}

測試結(jié)果如下(slice大小為100):

加大slice大小進行測試(slice大小為10000):

繼續(xù)加大(slice大小為100000)

slice大小為10^6:

可以看出:

第一種方法在slice大小比較小時,比第2、3種方法慢一倍左右。但是slice大小變大時,性能顯著下降。

第2種方法和第3種方法差距基本處于同一量級,但是第3種方法稍快一些。但是當slice大小增加到10^6級別時,第三種方法的優(yōu)勢就顯現(xiàn)出來。

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。如有錯誤或未考慮完全的地方,望不吝賜教。

您可能感興趣的文章:
  • Golang 刪除文件并遞歸刪除空目錄的操作
  • Golang 文件操作:刪除指定的文件方式
  • python/golang 刪除鏈表中的元素
  • Golang slice切片操作之切片的追加、刪除、插入等
  • golang針對map的判斷,刪除操作示例
  • Golang編程實現(xiàn)刪除字符串中出現(xiàn)次數(shù)最少字符的方法
  • golang 如何刪除二進制文件中的源碼路徑信息

標簽:吐魯番 雞西 欽州 蘭州 汕頭 梅河口 銅川 重慶

巨人網(wǎng)絡通訊聲明:本文標題《golang 刪除切片的某個元素及剔除切片內(nèi)的零值方式》,本文關鍵詞  golang,刪除,切片,的,某個,;如發(fā)現(xiàn)本文內(nèi)容存在版權問題,煩請?zhí)峁┫嚓P信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《golang 刪除切片的某個元素及剔除切片內(nèi)的零值方式》相關的同類信息!
  • 本頁收集關于golang 刪除切片的某個元素及剔除切片內(nèi)的零值方式的相關信息資訊供網(wǎng)民參考!
  • 推薦文章
    欧美阿v视频在线大全_亚洲欧美中文日韩V在线观看_www性欧美日韩欧美91_亚洲欧美日韩久久精品
  • <rt id="w000q"><acronym id="w000q"></acronym></rt>
  • <abbr id="w000q"></abbr>
    <rt id="w000q"></rt>
    国产亚洲精品成人a| 91麻豆精品国产91久久久久久久久| 精品久久五月天| 肉肉av福利一精品导航| 老熟女高潮一区二区三区| 欧美午夜视频网站| 亚洲最大成人综合| 18深夜在线观看免费视频| 欧美色图在线观看| 亚洲国产视频一区二区| 午夜不卡久久精品无码免费| 欧美精品电影在线播放| 午夜精品影院在线观看| 一级特级黄色片| 精品剧情v国产在线观看在线| 麻豆久久久久久| 日本污视频网站| 国产精品―色哟哟| 成人免费看黄yyy456| 色哟哟一区二区在线观看| 亚洲人成网站影音先锋播放| 一个人看的视频www| 欧美日韩国产一级片| 日韩专区一卡二卡| 久久精品国产亚洲AV熟女| 久久精品视频免费| 成人的网站免费观看| 色婷婷久久久亚洲一区二区三区| 玉足女爽爽91| 丝袜熟女一区二区三区| 日韩精品中文字幕在线不卡尤物| 久久精品国产久精国产| 久久一级免费视频| 亚洲欧洲av另类| 年下总裁被打光屁股sp| 精品三级在线看| 国产ts人妖一区二区| 在线免费一区三区| 日韩国产一区二| 在线观看免费黄色网址| 亚洲视频在线一区观看| 中文视频在线观看| 国产性天天综合网| 日本少妇激三级做爰在线| 欧美一区二区三区视频免费播放| 极品少妇一区二区三区精品视频| 亚洲波多野结衣| 亚洲成a人片在线不卡一二三区 | 亚洲精品无码久久久久久久| 91精品在线观看入口| 国产在线一区观看| 欧美午夜电影网| 精品一区二区三区在线播放视频| www.99re7| 石原莉奈一区二区三区在线观看| 在线看片中文字幕| 亚洲香肠在线观看| 极品尤物一区二区| 亚洲综合在线视频| 天天摸日日摸狠狠添| 一区二区三区在线观看动漫| 亚洲人成人无码网www国产| 亚洲欧洲精品一区二区三区| jizz日本免费| 亚洲欧洲精品成人久久奇米网| 亚洲成人av免费在线观看| 中文在线一区二区| 中文字幕天堂网| 国产精品久久久爽爽爽麻豆色哟哟| av免费观看不卡| 国产精品女上位| 精品久久久久久中文字幕人妻最新| 中文字幕一区三区| 色哟哟精品观看| 亚洲国产视频一区二区| 国产精品白丝喷水在线观看| 日本色综合中文字幕| 色视频成人在线观看免| 国产中文字幕精品| 欧美一级生活片| 91丨porny丨户外露出| 久久久久久久综合| 亚洲天堂资源在线| 一区二区在线观看av| 日韩福利在线视频| 视频一区国产视频| 欧美最猛黑人xxxxx猛交| 国产九色sp调教91| 欧美电影免费观看高清完整版在| 91亚洲国产成人精品一区二三| 久久精品视频免费| 短视频在线观看| 午夜欧美视频在线观看| 91黄色免费观看| 成人自拍视频在线| 国产午夜精品一区二区三区四区| aaaa黄色片| 亚洲永久免费av| 色综合视频一区二区三区高清| 国产一区二区三区免费看| 日韩欧美一二三| 秘密基地免费观看完整版中文| 最新国产成人在线观看| 久久一级免费视频| 国产一区二区三区视频在线播放| 日韩精品一区二| 在线观看国产免费视频| 亚洲成av人片在线观看无码| 欧洲精品中文字幕| 成人av片在线观看| 中文字幕一区二区三中文字幕| 亚洲综合第一区| 国产揄拍国内精品对白| 精品久久一二三区| 四虎国产精品成人免费入口| 奇米色一区二区三区四区| 91精品国产色综合久久ai换脸| 丰满人妻一区二区三区大胸| 亚洲欧美另类小说| 特级片在线观看| av电影一区二区| 一区在线中文字幕| 色偷偷一区二区三区| 本田岬高潮一区二区三区| 《视频一区视频二区| 色婷婷av一区二区| 日本黄色www| 亚洲一卡二卡三卡四卡无卡久久| 欧美性色aⅴ视频一区日韩精品| 成人激情开心网| 中文字幕欧美一区| www青青草原| 91蜜桃在线观看| 一区二区成人在线| 欧美日韩成人综合| 人体私拍套图hdxxxx| 日韩av在线发布| 精品日韩一区二区三区| 国产成人免费观看网站| 国产精品中文字幕日韩精品| 欧美国产视频在线| 色综合久久综合网| 91精品人妻一区二区三区四区| 亚洲福利电影网| 日韩亚洲欧美成人一区| 一区二区三区伦理片| 国产精品一二三区| 综合网在线视频| 欧美日韩精品一区二区天天拍小说 | 欧美一级精品大片| 干b视频在线观看| 国产九色sp调教91| 亚洲免费观看在线观看| 欧美精品在欧美一区二区少妇| 国产三级国产精品| 国产精品一区不卡| 亚洲美女淫视频| 欧美一级片在线看| 正在播放国产对白害羞| 成+人+亚洲+综合天堂| 亚洲在线免费播放| 精品美女一区二区| 麻豆视频在线免费看| 美女流白浆视频| 久久99久国产精品黄毛片色诱| 国产精品污污网站在线观看| 欧美吞精做爰啪啪高潮| 国产黄片一区二区三区| 成人性视频网站| 午夜免费久久看| 国产欧美1区2区3区| 欧美亚洲国产一区二区三区va| 国产精品久久不卡| 国产a视频精品免费观看| 亚洲一区二区三区四区不卡| 精品国产91亚洲一区二区三区婷婷| 我要看黄色一级片| 精品一区二区视频在线观看| 国产乱子伦一区二区三区国色天香| 亚洲男同1069视频| 欧美精品一区二区精品网| 91黄色在线观看| av电影网站在线观看| 91丨九色丨国产丨porny| 毛片av中文字幕一区二区| 成人欧美一区二区三区视频网页| 这里只有精品99re| 欧美视频www| 亚洲av无码一区二区二三区| a在线欧美一区| 精品夜夜嗨av一区二区三区| 一区二区三区精品在线| 久久精品视频网| 91精品欧美福利在线观看| 艳妇荡乳欲伦69影片| 中文字幕高清视频| 国产又粗又猛又爽又黄| 国产精品2024| 天天色综合天天| 亚洲精品视频在线看|