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

Основной курс Golang

Контрольные операторы в Golang

Функции и методы в Golang

Структуры в Golang

Срезы и массивы в Golang

Строки (String) в Golang

Указатели в Golang

Интерфейсы в Golang

Конкурентоспособность в Golang

Исключения (Error) в Golang

Другие темы Golang

Сравнение указателей языка Go

В языке 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