English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Tutorial básico de Golang

Comandos de controle em Golang

Funções e métodos em Golang

Estruturas em Golang

fatias e arrays em Golang

String em Golang

Ponteiro em Golang

Interfaces em Golang

Concorrência em Golang

Exceções do Go (Error)

Miscelânea do Go

Comparação da Estrutura do Go

no Go, a estrutura ou struct é um tipo definido pelo usuário, que permite criar um grupo de elementos de diferentes tipos em uma unidade. Qualquer entidade real que tenha um grupo de atributos ou campos pode ser representada por uma estrutura. Este conceito é comparado com a classe em programação orientada a objetos. Pode ser chamado de classe leve, que não suporta herança, mas suporta composição.

no Go, pode-se usaroperador ==oumétodo DeeplyEqual()comparar duas estruturas do mesmo tipo e que contêm os mesmos campos de valores. Se as estruturas forem iguais (em termos de valores dos campos), o operador e o método retornam true; caso contrário, retornam false. E, se os variáveis comparadas pertencerem a estruturas diferentes, o compilador fornecerá um erro. Vamos discutir esse conceito com um exemplo:

Atenção: o método DeeplyEqual() está definido na biblioteca "reflect".

comparar estruturas usando o operador ==

//conceito de igualdade de estruturas
//verificar a igualdade de estruturas usando o operador ==
package main
import "fmt"
//criar uma estrutura
type Author struct {
    nome      string
    rama    string
    linguagem  string
    Partículas int
}
func main() {
    //criar variáveis
    //estrutura de autor
    a1 := Author{
        nome:      "Moana",
        rama:    "CSE",
        linguagem:  "Python",
        Partículas: 38,
    }
    a2 := Author{
        nome:      "Moana",
        rama:    "CSE",
        linguagem:  "Python",
        Partículas: 38,
    }
    a3 := Author{
        nome:      "Dona",
        rama:    "CSE",
        linguagem:  "Python",
        Partículas: 38,
    }
    //verificar a igualdade de a usando o operador ==1com a2é igual
    if a1 == a2 {
        fmt.Println("variável a1igual à variável a2)
    } else {
        fmt.Println("variável a1não igual à variável a2)
    }
    if a2 == a3 {
        fmt.Println("variável a2igual à variável a3)
    } else {
        fmt.Println("variável a2não igual à variável a3)
    }
}

saída:

variável a1igual à variável a2
variável a2não igual à variável a3

usar o método DeepEqual() para comparar se as estruturas são iguais

//usar o método DeepEqual()
package main
import (
    "fmt"
    "reflect"
)
//criar uma estrutura
type Author struct {
    nome      string
    rama    string
    linguagem  string
    Partículas int
}
func main() {
    //definir variáveis
    //estrutura de autor
    a1 := Author{
        nome:      "Soana",
        rama:    "CSE",
        linguagem:  "Perl",
        Partículas: 48,
    }
    a2 := Author{
        nome:      "Soana",
        rama:    "CSE",
        linguagem:  "Perl",
        Partículas: 48,
    }
    a3 := Author{
        nome:      "Dia",
        rama:    "CSE",
        linguagem:  "Perl",
        Partículas: 48,
    }
    //comparar a1e a2, usar o método DeepEqual()
    fmt.Println("a1Igual a a2sim: ", reflect.DeepEqual(a1, a2))
    //comparar a2e a3, usar o método DeepEqual()
    fmt.Println("a2Igual a a3sim: ", reflect.DeepEqual(a2, a3))
}

saída:

a1Igual a a2sim:  true
a2Igual a a3Sim:  false