diff --git a/ch4/ch4-04-2.md b/ch4/ch4-04-2.md index 5f4812f..57aa56d 100644 --- a/ch4/ch4-04-2.md +++ b/ch4/ch4-04-2.md @@ -1,3 +1,25 @@ ### 4.4.2. 結構體比較 -TODO +如果结构体的全部成员都是可以比较的,那么结构体也是可以比较的,那样的话两个结构体将可以使用==或!=运算符进行比较。相等比较运算符==将比较两个结构体的每个成员,因此下面两个比较的表达式是等价的: + +```Go +type Point struct{ X, Y int } + +p := Point{1, 2} +q := Point{2, 1} +fmt.Println(p.X == q.X && p.Y == q.Y) // "false" +fmt.Println(p == q) // "false" +``` + +可比较的结构体类型和其他可比较的类型一样,可以用于map的key类型。 + +```Go +type address struct { + hostname string + port int +} + +hits := make(map[address]int) +hits[address{"golang.org", 443}]++ +``` +