首頁  >  文章  >  後端開發  >  為什麼我無法比較 net.Addr?

為什麼我無法比較 net.Addr?

王林
王林轉載
2024-02-12 14:36:05691瀏覽

为什么我无法比较 net.Addr?

問題內容

我試著去理解/了解為什麼我無法比較兩個相同的 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中文網其他相關文章!

陳述:
本文轉載於:stackoverflow.com。如有侵權,請聯絡admin@php.cn刪除