在Go语言中,允许比较两个指针。两个指针值只有在它们指向内存中的相同值或者它们是nil时才相等。您可以在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