比較運算
基礎類型比較
package main
import "fmt"
func main() {
var a = 1
var b = 1
if &a == &b {
fmt.Println("pointer cmp")
}
if a == b {
fmt.Println("value cmp")
}
}
value cmp
對於int
、bool
等基礎類型直接比較值相等,對於指針則是直接比較的指針所指向的地址是否相等
字符串比較
字符串的比較問題在
C/C++
和Java
中都是一個值得討論的問題
package main
import "fmt"
func main() {
var a = "a"
var b = "a"
if a == b {
fmt.Println("string cmp")
}
}
string cmp
對於字符串類型也是直接比較的字符串內容是否相等
結構體比較
package main
import "fmt"
type st struct {
v int
}
func main() {
var a = st{v: 10}
var b = st{v: 10}
if a == b {
fmt.Println("string cmp")
}
}
string cmp
在go語言中會比較結構體的每一個參數來判斷是否相等,所以結構體比較也是有意義的
而且這裏的比較對於匿名結構體也是一樣的,而對於不同類型的結構體則會直接報錯