English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
In Go, è possibile confrontare due puntatori. Due valori di puntatore sono uguali solo se puntano allo stesso valore nella memoria o se sono nil. Puoi confrontare i puntatori con l'aiuto degli operatori == e != forniti da Go:
1. Operatore ==:Se entrambi i puntatori puntano allo stesso variabile, l'operatore restituisce true. O se entrambi i puntatori puntano a variabili diverse, viene restituito false.
Sintassi:
pointer_1 == pointer_2
package main import "fmt" func main() { val1 := 2345 val2 := 567 // Creazione ed inizializzazione dei puntatori var p1 *int p1 = &val1 p2 := &val2 p3 := &val1 // Utilizzo dell'operatore == per confrontare i puntatori res1 := &p1 == &p2 fmt.Println("Il puntatore p1 è uguale al puntatore p2?: ", res1) res2 := p1 == p2 fmt.Println("Il puntatore p1 è uguale al puntatore p2?: ", res2) res3 := p1 == p3 fmt.Println("Il puntatore p1 è uguale al puntatore p3?: ", res3) res4 := p2 == p3 fmt.Println("Il puntatore p2 è uguale al puntatore p3?: ", res4) res5 := &p3 == &p1 fmt.Println("Il puntatore p3 è uguale al puntatore p1?: ", res5) }
Output:
Il puntatore p1 è uguale al puntatore p2?: false Il puntatore p1 è uguale al puntatore p2?: false Il puntatore p1 è uguale al puntatore p3?: true Il puntatore p2 è uguale al puntatore p3?: false Il puntatore p3 è uguale al puntatore p1?: false
2. Operatore !=:Se entrambi i puntatori puntano alla stessa variabile, questo operatore restituisce false. O se entrambi i puntatori puntano a variabili diverse, restituisce true.
Sintassi:
pointer_1 != pointer_2
package main import "fmt" func main() { val1 := 2345 val2 := 567 // Creazione ed inizializzazione dei puntatori var p1 *int p1 = &val1 p2 := &val2 p3 := &val1 // Utilizzo dell'operatore != per confrontare i puntatori res1 := &p1 != &p2 fmt.Println("Il puntatore p1 è uguale al puntatore p2?: ", res1) res2 := p1 != p2 fmt.Println("Il puntatore p1 è uguale al puntatore p2?: ", res2) res3 := p1 != p3 fmt.Println("Il puntatore p1 è uguale al puntatore p3?: ", res3) res4 := p2 != p3 fmt.Println("Il puntatore p2 è uguale al puntatore p3?: ", res4) res5 := &p3 != &p1 fmt.Println("Il puntatore p3 è uguale al puntatore p1?: ", res5) }
Output:
Il puntatore p1 è uguale al puntatore p2?: true Il puntatore p1 è uguale al puntatore p2?: true Il puntatore p1 è uguale al puntatore p3?: false Il puntatore p2 è uguale al puntatore p3?: true Il puntatore p3 è uguale al puntatore p1?: true