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

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

王林
發布: 2024-02-12 14:36:05
轉載
758 人瀏覽過

为什么我无法比较 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
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板