阅读 424

Go 结构体比较

Golang中的结构或struct是用户定义的类型,它允许我们在一个单元中创建一组不同类型的元素。任何具有一组属性或字段的真实实体都可以表示为结构。这个概念通常与面向对象编程中的类进行比较。它可以被称为轻量级类,不支持继承,但支持组合。

在Go语言中,可以通过==运算符DeeplyEqual()方法比较两个结构相同的类型并包含相同的字段值的结构。如果结构彼此相等(就其字段值而言),则运算符和方法均返回true;否则,返回false。并且,如果比较的变量属于不同的结构,则编译器将给出错误。让我们借助示例来讨论这个概念:

注意: DeeplyEqual()方法在“ reflect”包下定义。

使用==运算符比较结构体是否相等

示例

//结构相等的概念//使用==运算符package mainimport "fmt"//创建一个结构type Author struct {
    name      string    branch    string    language  string    Particles int}func main() {

    //创建变量    //作者结构    a1 := Author{
        name:      "Moana",
        branch:    "CSE",
        language:  "Python",
        Particles: 38,
    }

    a2 := Author{
        name:      "Moana",
        branch:    "CSE",
        language:  "Python",
        Particles: 38,
    }

    a3 := Author{
        name:      "Dona",
        branch:    "CSE",
        language:  "Python",
        Particles: 38,
    }

    //使用==运算符检查a1与a2是否相等    if a1 == a2 {

        fmt.Println("变量a1等于变量a2")

    } else {

        fmt.Println("变量a1不等于变量a2")
    }

    if a2 == a3 {

        fmt.Println("变量a2等于变量a3")

    } else {

        fmt.Println("变量a2不等于变量a3")
    }
}

输出:

变量a1等于变量a2
变量a2不等于变量a3

使用DeepEqual()方法比较结构体是否相等

示例

//使用DeepEqual()方法package mainimport (
    "fmt"    "reflect")//创建一个结构type Author struct {
    name      string    branch    string    language  string    Particles int}func main() {

    //定义变量    //作者结构    a1 := Author{
        name:      "Soana",
        branch:    "CSE",
        language:  "Perl",
        Particles: 48,
    }

    a2 := Author{
        name:      "Soana",
        branch:    "CSE",
        language:  "Perl",
        Particles: 48,
    }

    a3 := Author{
        name:      "Dia",
        branch:    "CSE",
        language:  "Perl",
        Particles: 48,
    }

    //比较a1和a2,使用Deep Equal()方法    fmt.Println("a1等于a2吗: ", reflect.DeepEqual(a1, a2))

    //比较a2和a3,使用Deep Equal()方法    fmt.Println("a2等于a3吗: ", reflect.DeepEqual(a2, a3))
}

输出:

a1等于a2吗:  truea2等于a3吗:  false


文章分类
代码人生
文章标签
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐