美文网首页
struct比较

struct比较

作者: DifferentMan | 来源:发表于2019-08-28 15:13 被阅读0次

从下面代码可以看出:
1、相同实例的可以比较,但不能含有不可比较的结构体成员(切片和map),可以强转为同一结构体的也可以比较
2、struct不能作为map的key

package main

import (
    "fmt"
    "reflect"
)

type Comp1 struct {
    Age  int
    Name string
}

type Comp2 struct {
    Age  int
    Name string
    Ms   []int // (struct containing []int cannot be compared)
    Ks   map[string]string
}

type Comp3 struct {
    Age  int
    Name string
    Ms   [2]bool //[]boolb不可以比较,[2]bool可以比较(切片和map不能比较)
}

type Comp4 struct {
    Age  int
    Name string
    Ms   [2]bool
}

func main() {
    t1 := Comp1{Age: 20, Name: "wangwang"}
    t2 := Comp1{Age: 27, Name: "mht"}
    fmt.Println("same ?", reflect.DeepEqual(t1, t2))
    fmt.Println("same ?", t1 == t2)
    fmt.Println("same ?", &t1 == &t2)
    t3 := Comp2{Age: 20, Name: "wangwang"}
    t4 := Comp2{Age: 27, Name: "mht"}
    fmt.Println("same ?", reflect.DeepEqual(t3, t4))
    t3 = Comp2{Age: 20, Name: "wangwang"}
    t4 = Comp2{Age: 20, Name: "wangwang"}
    t5 := t3
    fmt.Println("same ?", reflect.DeepEqual(t3, t4))
    //fmt.Println("same ?", t3 == t4 )
    fmt.Println("same ?", &t3 == &t4)
    fmt.Println("same ?", reflect.DeepEqual(t3, t5))
    fmt.Println("same ?", &t3 == &t5)
    //fmt.Println("same ?", t3 == t1 )//(mismatched types Comp2 and Comp1)
    t6 := Comp3{Age: 20, Name: "wangwang"}
    t7 := Comp4{Age: 20, Name: "wangwang"}
    //fmt.Println("same ?", t7 == t6)//(mismatched types Comp4 and Comp3)
    fmt.Println("same ?", t7 == Comp4(t6))
    fmt.Println("same ?", reflect.DeepEqual(t6, t7))

    //m := make(map[Comp4]int)//type Comp4 is not an expression
    //m[Comp4]++
    //fmt.Println(m[t7])
}

相关文章

  • struct比较

    从下面代码可以看出:1、相同实例的可以比较,但不能含有不可比较的结构体成员(切片和map),可以强转为同一结构体的...

  • Class和Struct比较

    从类型上看,在Swift中,Class是引用类型,Struct是值类型。值类型在传递和赋值的时候进行深复制,而引用...

  • go业务code

    runtime go struct能不能比较 同一个struct的2个实例能否比较1.成员变量带有了不能比较的成员...

  • Swift中,Struct在栈区,Class对象分配在堆区?

    学习Swift时,有各种Struct和Class的比较,不少博客,指出Struct速度快,分配在栈区,而Class...

  • Go语言 struct结构体 能比较么 == 或 !=

    同一个struct的2个实例能不能比较 == != 答案:可以能、也可以不能 两个不同的struct的实例能不能...

  • 内存字节对齐

    我们可以先看看下面的结构体,观察一下结构体的内存分配情况: 比较Struct1 和 Struct2 属性是相同的,...

  • struct和typedef struct彻底明白了

    参看struct和typedef struct彻底明白了 typedef struct和struct的区别: ty...

  • golang 基础(17)struct

    struct 创建 struct 通过 type 关键字定义一个 struct ,定义 struct 结构包括哪些...

  • 结构体 数组 形参

    结构体复习 struct{ }bool; struct bool a; struct bool *b; 函数将含有...

  • 数据库

    struct & class C++中的struct是对C中的struct的扩充。和class一样,struct有...

网友评论

      本文标题:struct比较

      本文链接:https://www.haomeiwen.com/subject/zjtmectx.html