在Go語言中,允許比較兩個指針。兩個指針值只有在它們指向內(nèi)存中的相同值或者它們是nil時才相等。您可以在Go語言提供的==和!=運(yùn)算符的幫助下對指針進(jìn)行比較:
1. == 運(yùn)算符:如果兩個指針都指向同一個變量,則此運(yùn)算符返回true?;蛉绻麅蓚€指針都指向不同的變量,則返回false。
語法:
pointer_1 == pointer_2
package main import "fmt" func main() { val1 := 2345 val2 := 567 //創(chuàng)建和初始化指針 var p1 *int p1 = &val1 p2 := &val2 p3 := &val1 //使用==運(yùn)算符比較指針 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.!= 運(yùn)算符:如果兩個指針都指向同一個變量,則此運(yùn)算符返回false?;蛉绻麅蓚€指針都指向不同的變量,則返回true。
語法:
pointer_1 != pointer_2
package main import "fmt" func main() { val1 := 2345 val2 := 567 //創(chuàng)建和初始化指針 var p1 *int p1 = &val1 p2 := &val2 p3 := &val1 // 使用 != 運(yùn)算符比較指針 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