將字串切片轉換為自訂類型切片
這個問題是由於嘗試轉換字串切片([ ]string)到自在定義類型(Hand)的切片中,兩個切片都具有具有相同基礎類型(Card)的元素。編譯器將此標記為錯誤,引發了對類型相容性的擔憂以及需要解決方法。
根本問題源自於 Go 規範決定禁止不同類型切片之間的直接轉換,即使它們的元素共享相同類型。這是為了防止恰好具有相似結構的不相關類型之間發生無意的轉換。
為了解決這個問題,最安全的方法是複製切片的元素。但是,如果由於潛在的資料修改而無法複製,則可以使用不安全的套件進行替代:
unsafe.Pointer(&value) *(*[]Card)(x)
其中:
這允許切片直接轉換,無需複製。但是,必須謹慎使用此方法,並認識到與繞過類型檢查相關的固有風險。
Go 社群內一直在討論允許遞歸等效類型之間進行轉換。但目前這樣的提議尚未實施。
以上是如何在 Go 中安全地將字串切片轉換為自訂類型切片?的詳細內容。更多資訊請關注PHP中文網其他相關文章!