Golang 菜鳥教程

Golang 控制語句

Golang 函數(shù) & 方法

Golang 結(jié)構(gòu)體

Golang 切片 & 數(shù)組

Golang 字符串(String)

Golang 指針

Golang 接口

Golang 并發(fā)

Golang 異常(Error)

Golang 其他雜項(xiàng)

Go 結(jié)構(gòu)體比較

Golang中的結(jié)構(gòu)或struct是用戶定義的類型,它允許我們在一個(gè)單元中創(chuàng)建一組不同類型的元素。任何具有一組屬性或字段的真實(shí)實(shí)體都可以表示為結(jié)構(gòu)。這個(gè)概念通常與面向?qū)ο缶幊讨械念愡M(jìn)行比較。它可以被稱為輕量級類,不支持繼承,但支持組合。

在Go語言中,可以通過==運(yùn)算符DeeplyEqual()方法比較兩個(gè)結(jié)構(gòu)相同的類型并包含相同的字段值的結(jié)構(gòu)。如果結(jié)構(gòu)彼此相等(就其字段值而言),則運(yùn)算符和方法均返回true;否則,返回false。并且,如果比較的變量屬于不同的結(jié)構(gòu),則編譯器將給出錯(cuò)誤。讓我們借助示例來討論這個(gè)概念:

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

使用==運(yùn)算符比較結(jié)構(gòu)體是否相等

//結(jié)構(gòu)相等的概念
//使用==運(yùn)算符

package main

import "fmt"

//創(chuàng)建一個(gè)結(jié)構(gòu)
type Author struct {
    name      string
    branch    string
    language  string
    Particles int
}

func main() {

    //創(chuàng)建變量
    //作者結(jié)構(gòu)
    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,
    }

    //使用==運(yùn)算符檢查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()方法比較結(jié)構(gòu)體是否相等

//使用DeepEqual()方法
package main

import (
    "fmt"
    "reflect"
)

//創(chuàng)建一個(gè)結(jié)構(gòu)
type Author struct {
    name      string
    branch    string
    language  string
    Particles int
}

func main() {

    //定義變量
    //作者結(jié)構(gòu)
    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嗎:  true
a2等于a3嗎:  false
丰满人妻一级特黄a大片,午夜无码免费福利一级,欧美亚洲精品在线,国产婷婷成人久久Av免费高清