Golang 比较指针

Golang 比较指针

Go编程语言或Golang中的指针是一个变量,用来存储另一个变量的内存地址。Golang中的指针也被称为特殊变量。这些变量用于在系统中的特定内存地址上存储一些数据。内存地址总是以十六进制格式出现(以0x开头,如0xFFAAF等)。
在Go语言中,你可以将两个指针相互比较。两个指针的值只有当它们指向内存中的相同值或为零时才是相等的。你可以在Go语言提供的 ==!= 运算符的帮助下对指针进行比较。

1.==运算符: 如果两个指针都指向同一个变量,该运算符返回真。或者,如果两个指针都指向不同的变量,则返回假。

语法

pointer_1 == pointer_2

例子

// Go program to illustrate the
// concept of comparing two pointers
package main
  
import "fmt"
  
func main() {
  
    val1 := 2345
    val2 := 567
  
    // Creating and initializing pointers
    var p1 *int
    p1 = &val1
    p2 := &val2
    p3 := &val1
  
    // Comparing pointers 
    // with each other
    // Using == operator
    res1 := &p1 == &p2
    fmt.Println("Is p1 pointer is equal to p2 pointer: ", res1)
  
    res2 := p1 == p2
    fmt.Println("Is p1 pointer is equal to p2 pointer: ", res2)
  
    res3 := p1 == p3
    fmt.Println("Is p1 pointer is equal to p3 pointer: ", res3)
  
    res4 := p2 == p3
    fmt.Println("Is p2 pointer is equal to p3 pointer: ", res4)
  
    res5 := &p3 == &p1
    fmt.Println("Is p3 pointer is equal to p1 pointer: ", res5)
}

输出

Is p1 pointer is equal to p2 pointer:  false
Is p1 pointer is equal to p2 pointer:  false
Is p1 pointer is equal to p3 pointer:  true
Is p2 pointer is equal to p3 pointer:  false
Is p3 pointer is equal to p1 pointer:  false

2. !=操作符: 如果两个指针都指向同一个变量,该操作符返回假。或者如果两个指针都指向不同的变量,则返回真。

语法

pointer_1 != pointer_2

例子

// Go program to illustrate the 
// concept of comparing two pointers
package main
  
import "fmt"
  
func main() {
  
    val1 := 2345
    val2 := 567
  
    // Creating and initializing pointers
    var p1 *int
    p1 = &val1
    p2 := &val2
    p3 := &val1
  
    // Comparing pointers
    // with each other
    // Using != operator
    res1 := &p1 != &p2
    fmt.Println("Is p1 pointer not equal to p2 pointer: ", res1)
  
    res2 := p1 != p2
    fmt.Println("Is p1 pointer not equal to p2 pointer: ", res2)
  
    res3 := p1 != p3
    fmt.Println("Is p1 pointer not equal to p3 pointer: ", res3)
  
    res4 := p2 != p3
    fmt.Println("Is p2 pointer not equal to p3 pointer: ", res4)
  
    res5 := &p3 != &p1
    fmt.Println("Is p3 pointer not equal to p1 pointer: ", res5)
}

输出

Is p1 pointer not equal to p2 pointer:  true
Is p1 pointer not equal to p2 pointer:  true
Is p1 pointer not equal to p3 pointer:  false
Is p2 pointer not equal to p3 pointer:  true
Is p3 pointer not equal to p1 pointer:  true

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程