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

Tutorial di base Golang

Istruzioni di controllo Golang

Funzione & Metodo Golang

Struttura Golang

Tagli & Array Golang

Stringa (String) Golang

Puntatore Golang

Interfaccia Golang

Concordanza Golang

Eccezioni (Error) Golang

Altri argomenti Golang

Confronto delle strutture Go

La struttura o struct in Golang è un tipo definito dall'utente, che ci permette di creare un insieme di elementi di diversi tipi in un singolo unità. Qualsiasi entità reale che ha un insieme di attributi o campi può essere rappresentata come una struttura. Questo concetto è spesso confrontato con le classi nell'orientamento a oggetti. Può essere chiamato classe leggera, non supporta l'ereditarietà, ma supporta la composizione.

In Go, è possibile utilizzareOperatore ==oMetodo DeeplyEqual()Confronta due tipi di struttura identici che contengono valori di campo uguali. Se le strutture sono identiche (in termini di valori di campo), l'operatore e i metodi restituiscono true; altrimenti, restituiscono false. E se le variabili confrontate appartengono a strutture diverse, il compilatore genera un errore. Facciamo un esempio per discutere questo concetto:

Attenzione:

Il metodo DeeplyEqual() è definito nel pacchetto "reflect".

Confronta le strutture utilizzando l'operatore ==
//Concetto di uguaglianza delle strutture
package main
//Utilizzo dell'operatore ==
//Creazione di una struttura
type Author struct {
    name          string
    branch        string
    language    string
    Particles int
}
func main() {
    
    //Struttura autore
    a1 := Author{
        
        
        language:    \
        Particles:    38,
    }
    
        
        
        language:    \
        Particles:    38,
    }
    
        
        
        language:    \
        Particles:    38,
    }
    //Verifica l'uguaglianza di a1 e a2 utilizzando l'operatore ==
    if a1 == a2 {
        fmt.Println("La variabile a1 è uguale alla variabile a2")
    }
        fmt.Println("La variabile a1 non è uguale alla variabile a2")
    }
    if a2 == a3 {
        fmt.Println("La variabile a2 è uguale alla variabile a3")
    }
        fmt.Println("La variabile a2 non è uguale alla variabile a3")
    }
}

Output:

La variabile a1 è uguale alla variabile a2
La variabile a2 non è uguale alla variabile a3

Confronta le strutture utilizzando il metodo DeepEqual()

//Utilizzo del metodo DeepEqual()
package main
import (
    "fmt"
    "reflect"
}
//Creazione di una struttura
type Author struct {
    name          string
    branch        string
    language    string
    Particles int
}
func main() {
    //Definizione variabili
    //Struttura autore
    a1 := Author{
        name:          \
        
        language:    \
        Particles:    48,
    }
    
        name:          \
        
        language:    \
        Particles:    48,
    }
    
        
        
        language:    \
        Particles:    48,
    }
    //Confronta a1 e a2, utilizzando il metodo DeepEqual()
    fmt.Println("a1 uguale a2?: ", reflect.DeepEqual(a1, a2))
    //Confronta a2 e a3, utilizzando il metodo DeepEqual()
    fmt.Println("a2 uguale a3?: ", reflect.DeepEqual(a2, a3))
}

Output:

a1 uguale a2?:    vero
a2 è uguale a a3:  false