zoukankan      html  css  js  c++  java
  • golang 相同结构体比较方式比较

    golang 相同结构体比较方式比较

    使用==

    示例:

    type Student struct {
    	Name string
    	Age  int
    }
    type Class struct {
    	Name string
    }
    func main() {
    	s1 := Student{
    		Name: "ysm",
    		Age:  23,
    	}
    	s2 := Student{
    		Name: "ysm",
    		Age:  23,
    	}
    	if s1 == s2 {
    		log.Println("这两个值相同")
    	} else {
    		log.Println("这两个值不相同")
    	}
    }
    # 输出:这两个值相同
    

    缺点:如果结构体中有指针类型,就不能够进行比较。因为对于指针类型的比较是比较地址,不是比较指针指向的内容

    示例:

    type Student struct {
    	Name string
    	Age  int
    	C    *Class
    }
    
    type Class struct {
    	Name string
    }
    
    func main() {
    	s1 := Student{
    		Name: "ysm",
    		Age:  23,
    		C: &Class{
    			Name: "3班",
    		},
    	}
    	s2 := Student{
    		Name: "ysm",
    		Age:  23,
    		C: &Class{
    			Name: "3班",
    		},
    	}
    	if s1 == s2 {
    		log.Println("这两个值相同")
    	} else {
    		log.Println("这两个值不相同")
    	}
    }
    # 输出:这两个值不相同
    

    使用reflect.DeepEqual

    示例:

    type Student struct {
    	Name string
    	Age  int
    	C    *Class
    }
    
    type Class struct {
    	Name string
    }
    
    func main() {
    	s1 := Student{
    		Name: "ysm",
    		Age:  23,
    		C: &Class{
    			Name: "3班",
    		},
    	}
    	s2 := Student{
    		Name: "ysm",
    		Age:  23,
    		C: &Class{
    			Name: "3班",
    		},
    	}
    	if reflect.DeepEqual(s1, s2) {
    		log.Println("这两个值相同")
    	} else {
    		log.Println("这两个值不相同")
    	}
    }
    # 输出:这两个值相同
    

    原因:使用reflect.DeepEqual是进行值比较

    缺点:运行时间慢

  • 相关阅读:
    openmediavault 5.5.23 安装插件失败的解决方案
    qt下载地址
    qt 5.12 增加 mysql驱动
    选基金标准
    关注几个基金
    调仓的几个问题
    要读的书
    ubuntu 20.04 LTS 安装webmin
    set的常见用法
    斜率优化dp([HNOI2008]玩具装箱)
  • 原文地址:https://www.cnblogs.com/MyUniverse/p/15726868.html
Copyright © 2011-2022 走看看