go 判斷兩個 slice/struct/map 是否相等的實(shí)例
可以通過 reflect.DeepEqual 比較兩個 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語言判斷 slice,array,map中是否存在某個元素
最近在用go重構(gòu)以前python寫的項(xiàng)目。遇到一些問題,總結(jié)一下。自己水平比較菜,遇到問題較低級,自己總結(jié)一下,免得忘了
很簡單的需求,判斷某個元素是否在 slice,array ,map中 。其實(shí)很簡單。但是還是python最簡單啊。。。。。。。
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")
}
以上為個人經(jīng)驗(yàn),希望能給大家一個參考,也希望大家多多支持腳本之家。如有錯誤或未考慮完全的地方,望不吝賜教。
相關(guān)文章
VSCode Golang dlv調(diào)試數(shù)據(jù)截?cái)鄦栴}及處理方法
這篇文章主要介紹了VSCode Golang dlv調(diào)試數(shù)據(jù)截?cái)鄦栴},本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-06-06
Golang中的sync.WaitGroup用法實(shí)例
這篇文章主要介紹了Golang中的sync.WaitGroup用法實(shí)例,WaitGroup的用途,它能夠一直等到所有的goroutine執(zhí)行完成,并且阻塞主線程的執(zhí)行,直到所有的goroutine執(zhí)行完成,需要的朋友可以參考下2015-07-07
GoLang中的timer定時器實(shí)現(xiàn)原理分析
Timer中對外暴露的只有一個channel,這個 channel也是定時器的核心。當(dāng)計(jì)時結(jié)束時,Timer會發(fā)送值到channel中,外部環(huán)境在這個 channel 收到值的時候,就代表計(jì)時器超時了,可與select搭配執(zhí)行一些超時邏輯2023-02-02
Go語言crypto包創(chuàng)建自己的密碼加密工具實(shí)現(xiàn)示例
Go語言借助它的簡單性和強(qiáng)大的標(biāo)準(zhǔn)庫,實(shí)現(xiàn)一個自己的密碼加密工具,本文將會結(jié)合代碼示例深入探討如何使用Go語言的crypto包來實(shí)現(xiàn)自己的加密工具2023-11-11
golang 網(wǎng)絡(luò)框架之gin的使用方法
這篇文章主要介紹了golang 網(wǎng)絡(luò)框架之gin的使用方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-11-11

