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是进行值比较

    缺点:运行时间慢

  • 相关阅读:
    vision transformer
    亮剑,gacutil.exe
    MOSS自定义登陆页面
    查看应用程序的进程ID
    基于AD的表单认证 Moss2010
    js 实现拖动
    获取指定数据库表, 以及指定表的数据信息
    二分法
    JZ053表示数值的字符串
    JZ054字符流中第一个不重复的字符
  • 原文地址:https://www.cnblogs.com/MyUniverse/p/15726868.html
Copyright © 2011-2022 走看看