辨識Go 切片或陣列中的唯一元素
在Go 中,從切片或陣列中取得唯一元素清單可能是一個挑戰,特別是對於結構化資料類型。以下是完成此任務的方法:
在提供的程式碼範例中,存在幾個問題:
-
比較所有元素:它比較訪問切片到唯一切片中的每個元素,可能會向唯一添加重複項。
-
使用 Reflect.DeepEqual: 這是不必要的,因為具有可比較字段的 Go 結構本質上支援使用 = 的值相等= 運算符。
替代策略:
-
使用集合: 雖然Go 沒有內建的設定資料結構,您可以使用有布林值的對應來建立一個資料結構。每個元素都成為一個鍵,並且地圖充當唯一的存儲。若要稍後將唯一元素作為切片檢索,請迭代映射鍵。
-
明確檢查唯一性:迭代存取的切片並檢查當前元素是否存在於唯一切片中。如果是,則跳過;否則,將其添加到唯一。
-
使用自訂資料結構: 建立一個實作集合的自訂資料結構。如果您需要執行頻繁的唯一性檢查,這可以提供比使用映射更有效的解決方案。
注意: Go 中的結構體類型如果所有欄位都可比較,則它們是可比較的。這包括原始類型,如整數和浮點數。
以上是如何有效率地尋找Go切片和陣列中的唯一元素?的詳細內容。更多資訊請關注PHP中文網其他相關文章!