主頁 > 知識庫 > go 判斷兩個(gè) slice/struct/map 是否相等的實(shí)例

go 判斷兩個(gè) slice/struct/map 是否相等的實(shí)例

熱門標(biāo)簽:百度競價(jià)排名 AI電銷 服務(wù)外包 地方門戶網(wǎng)站 網(wǎng)站排名優(yōu)化 鐵路電話系統(tǒng) 呼叫中心市場需求 Linux服務(wù)器

可以通過 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語言判斷 slice,array,map中是否存在某個(gè)元素

最近在用go重構(gòu)以前python寫的項(xiàng)目。遇到一些問題,總結(jié)一下。自己水平比較菜,遇到問題較低級,自己總結(jié)一下,免得忘了

很簡單的需求,判斷某個(gè)元素是否在 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")
}

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

您可能感興趣的文章:
  • 深入解析Go語言編程中slice切片結(jié)構(gòu)
  • golang語言如何將interface轉(zhuǎn)為int, string,slice,struct等類型
  • Golang中的Slice與數(shù)組及區(qū)別詳解
  • Go 中 slice 的 In 功能實(shí)現(xiàn)探索
  • Go語言中slice作為參數(shù)傳遞時(shí)遇到的一些“坑”
  • 深入理解go slice結(jié)構(gòu)

標(biāo)簽:銅川 湖南 崇左 仙桃 黃山 湘潭 衡水 蘭州

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《go 判斷兩個(gè) slice/struct/map 是否相等的實(shí)例》,本文關(guān)鍵詞  ;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 收縮
    • 微信客服
    • 微信二維碼
    • 電話咨詢

    • 400-1100-266