golang之判斷元素是否在數(shù)組內(nèi)問題
golang判斷元素是否在數(shù)組內(nèi)
眾所周知,golang里沒有像python的in來判斷元素是否在list里存在,可替代的辦法是將list放到map里,在map里判斷元素是否存在
// 已知list中元素"amber","jack" arr := [...]string{"amber","jack"} // 初始化map var set map[string]struct{} set = make(map[string]struct{}) // 上面2部可替換為set := make(map[string]struct{}) // 將list內(nèi)容傳遞進(jìn)map,只根據(jù)key判斷,所以不需要關(guān)心value的值,用struct{}{}表示 for _, value := range arr{ set[value] = struct{}{} } // 檢查元素是否在map if _, ok := set["amber"];ok { fmt.Println("amber is in the list") } else { fmt.Println("amber is not in the list") }
golang判斷一個(gè)目標(biāo)元素是否在目標(biāo)數(shù)組中
- 目標(biāo)數(shù)組只能包含整形、字符串、布爾類型等基本類型
- 目標(biāo)元素只能包含整形、字符串、布爾類型等基本類型
- 非interface數(shù)組需要先轉(zhuǎn)換為對(duì)于的interface數(shù)組
- 其余基本類型的轉(zhuǎn)換按思想實(shí)現(xiàn)即可
import "reflect" func FolatArray2Interface(array []float32) []interface{} { var goalArray []interface{} for _, value := range array { goalArray = append(goalArray, value) } return goalArray } func IntArray2Interface(array []int) []interface{} { var goalArray []interface{} for _, value := range array { goalArray = append(goalArray, value) } return goalArray } func StringArray2Interface(array []string) []interface{} { var goalArray []interface{} for _, value := range array { goalArray = append(goalArray, value) } return goalArray } func InArray(array []interface{}, element interface{}) bool { // 實(shí)現(xiàn)查找整形、string類型和bool類型是否在數(shù)組中 if element == nil || array == nil { return false } for _, value := range array { // 首先判斷類型是否一致 if reflect.TypeOf(value).Kind() == reflect.TypeOf(element).Kind() { // 比較值是否一致 if value == element { return true } } } return false }
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Golang 實(shí)現(xiàn)Thrift客戶端連接池方式
這篇文章主要介紹了Golang 實(shí)現(xiàn)Thrift客戶端連接池方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-12-12golang 如何通過反射創(chuàng)建新對(duì)象
這篇文章主要介紹了golang 通過反射創(chuàng)建新對(duì)象的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2021-04-04GO語(yǔ)言實(shí)現(xiàn)二維碼掃碼的示例代碼
你對(duì)二維碼掃碼的流程有困惑嗎,這篇文章就結(jié)合筆者自身的開發(fā)經(jīng)驗(yàn)進(jìn)行分享,讓大家熟悉并掌握此功能,感興趣的小伙伴快跟隨小編一起學(xué)習(xí)一下吧2023-06-06Go語(yǔ)言中配置實(shí)現(xiàn)Logger日志的功能詳解
當(dāng)我們正式開發(fā)go程序的時(shí)候,就會(huì)發(fā)現(xiàn)記錄程序日志已經(jīng)不是fmt.print這么簡(jiǎn)單了,所以我們需要專門的去存儲(chǔ)日志文件,這篇文章主要介紹了在Go語(yǔ)言中配置實(shí)現(xiàn)Logger日志的功能,感興趣的同學(xué)可以參考下文2023-05-05golang如何通過viper讀取config.yaml文件
這篇文章主要介紹了golang通過viper讀取config.yaml文件,圍繞golang讀取config.yaml文件的相關(guān)資料展開詳細(xì)內(nèi)容,需要的小伙伴可以參考一下2022-03-03Go語(yǔ)言Elasticsearch數(shù)據(jù)清理工具思路詳解
這篇文章主要介紹了Go語(yǔ)言Elasticsearch數(shù)據(jù)清理工具思路詳解,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-10-10go語(yǔ)言實(shí)現(xiàn)mqtt協(xié)議的實(shí)踐
MQTT是一個(gè)基于客戶端-服務(wù)器的消息發(fā)布/訂閱傳輸協(xié)議。本文主要介紹了go語(yǔ)言實(shí)現(xiàn)mqtt協(xié)議的實(shí)踐,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-09-09