go 判斷兩個(gè) slice/struct/map 是否相等的實(shí)例
可以通過(guò) reflect.DeepEqual 比較兩個(gè) slice/struct/map 是否相等:
package main import ( "fmt" "reflect" ) type A struct { s string } func main() { a1 := A{s: "abc"} a2 := A{s: "abc"} if reflect.DeepEqual(a1, a2) { fmt.Println(a1, "==", a2) } b1 := []int{1, 2} b2 := []int{1, 2} if reflect.DeepEqual(b1, b2) { fmt.Println(b1, "==", b2) } c1 := map[string]int{"a": 1, "b": 2} c2 := map[string]int{"a": 1, "b": 2} if reflect.DeepEqual(c1, c2) { fmt.Println(c1, "==", c2) } }
補(bǔ)充:go語(yǔ)言判斷 slice,array,map中是否存在某個(gè)元素
最近在用go重構(gòu)以前python寫(xiě)的項(xiàng)目。遇到一些問(wèn)題,總結(jié)一下。自己水平比較菜,遇到問(wèn)題較低級(jí),自己總結(jié)一下,免得忘了
很簡(jiǎn)單的需求,判斷某個(gè)元素是否在 slice,array ,map中 。其實(shí)很簡(jiǎn)單。但是還是python最簡(jiǎn)單啊。。。。。。。
func Contain(obj interface{}, target interface{}) (bool, error) { targetValue := reflect.ValueOf(target) switch reflect.TypeOf(target).Kind() { case reflect.Slice, reflect.Array: for i := 0; i < targetValue.Len(); i++ { if targetValue.Index(i).Interface() == obj { return true, nil } } case reflect.Map: if targetValue.MapIndex(reflect.ValueOf(obj)).IsValid() { return true, nil } } return false, errors.New("not in array") }
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教。
相關(guān)文章
Windows下使用go語(yǔ)言寫(xiě)程序安裝配置實(shí)例
這篇文章主要介紹了Windows下使用go語(yǔ)言寫(xiě)程序安裝配置實(shí)例,本文講解了安裝go語(yǔ)言、寫(xiě)go代碼、生成可執(zhí)行文件、批量生成可執(zhí)行文件等內(nèi)容,需要的朋友可以參考下2015-03-03go語(yǔ)言中time包的各種函數(shù)總結(jié)
時(shí)間和日期是我們編程中經(jīng)常會(huì)用到的,下面這篇文章主要給大家介紹了關(guān)于go語(yǔ)言中time包的各種函數(shù)總結(jié)的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-04-04golang 中signal包的Notify用法說(shuō)明
這篇文章主要介紹了golang 中signal包的Notify用法說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-03-03golang post請(qǐng)求常用的幾種方式小結(jié)
這篇文章主要介紹了golang post請(qǐng)求常用的幾種方式小結(jié),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-04-04Golang中map的三種聲明定義方式實(shí)現(xiàn)
本文主要介紹了Golang中map的三種聲明定義方式實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-02-02Go語(yǔ)言操作redis數(shù)據(jù)庫(kù)的方法
這篇文章主要介紹了Go語(yǔ)言操作redis數(shù)據(jù)庫(kù)的方法,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-07-07