我試著去理解/了解為什麼我無法比較兩個相同的 net.Addr。
從這篇文章來看,如果兩個介面具有相同的基礎類型並且可以比較該類型,則它們似乎應該能夠進行比較。在下面的範例中,基礎類型是 net.UDPAddr。它是一個包含字串、int 和 net.IP 的結構體,net.IP 是 []byte 的型別別名。
是因為切片IP沒有可比性嗎?即使它的類型、長度和內容相同?
範例:
https://go.dev/play/p/dIzRCTwBA4P
您的範例比較了兩次呼叫net.ResolveUDPAddr
傳回的值。但是,如果您考慮函數簽名:
您會注意到您實際上是在比較兩個指標;它們是可比較的,但不相等(您正在比較指標;而不是它指向的值)。
根據 go 規格:
net.UDPAddr 包含一個 net.IP
這是一個 []byte
,因此不具有可比性。
這個範例擴充功能可能會有所幫助。
以上是為什麼我無法比較 net.Addr?的詳細內容。更多資訊請關注PHP中文網其他相關文章!