English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
В языке Go разрешается сравнивать два указателя. Значения указателей равны только если они指向 одинаковые значения в памяти или они оба null. Вы можете сравнивать указатели с помощью операторов == и != предоставленных языком Go:
1. Оператор ==:Если два указателя指向 одну и ту же переменную, то этот оператор возвращает true. Или если два указателя指向 разные переменные, то возвращает false.
Грамматика:
pointer_1 == pointer_2
package main import "fmt" func main() { val1 := 2345 val2 := 567 //создание и инициализация указателей var p1 *int p1 = &val1 p2 := &val2 p3 := &val1 //использование == оператора для сравнения указателей res1 := &p1 == &p2 fmt.Println("p1 указатель равен p2 указателю: ", res1) res2 := p1 == p2 fmt.Println("p1 указатель равен p2 указателю: ", res2) res3 := p1 == p3 fmt.Println("p1 указатель равен p3 указателю: ", res3) res4 := p2 == p3 fmt.Println("p2 указатель равен p3 указателю: ", res4) res5 := &p3 == &p1 fmt.Println("p3 указатель равен p1 указателю: ", res5) }
Вывод:
p1 указатель равен p2 указателю: false p1 указатель равен p2 указателю: false p1 указатель равен p3 указателю: true p2 указатель равен p3 указателю: false p3 указатель равен p1 указателю: false
2.!= оператор:Если два указателя указывают на один и тот же переменной, то этот оператор возвращает false. Или если два указателя указывают на разные переменные, то возвращается true.
Грамматика:
pointer_1 != pointer_2
package main import "fmt" func main() { val1 := 2345 val2 := 567 //создание и инициализация указателей var p1 *int p1 = &val1 p2 := &val2 p3 := &val1 // использование != оператора для сравнения указателей res1 := &p1 != &p2 fmt.Println("p1 указатель не равен p2 указателю: ", res1) res2 := p1 != p2 fmt.Println("p1 указатель не равен p2 указателю: ", res2) res3 := p1 != p3 fmt.Println("p1 указатель не равен p3 указателю: ", res3) res4 := p2 != p3 fmt.Println("p2 указатель не равен p3 указателю: ", res4) res5 := &p3 != &p1 fmt.Println("p3 указатель не равен p1 указателю: ", res5) }
Вывод:
p1 указатель не равен p2 указателю? true p1 указатель не равен p2 указателю? true p1 указатель не равен p3 указателю? false p2 указатель не равен p3 указателю? true p3 указатель не равен p1 указателю? true