文字列のスライスからカスタム タイプのスライスへの変換
この質問は、文字列のスライス ([ ]string) をカスタム タイプ (Hand) のスライスに変換します。両方のスライスには、同じ基礎となるタイプ (Card) を持つ要素が含まれます。コンパイラはこれにエラーのフラグを立て、型の互換性と回避策の必要性に関する懸念を引き起こします。
根本的な問題は、要素が共有されている場合でも、異なる型のスライス間の直接変換を禁止するという Go 仕様の決定に起因しています。同じタイプです。これは、類似した構造を持つ無関係な型間で誤って変換されることを防ぐことを目的としています。
これに対処するには、最も安全なアプローチは、スライスの要素をコピーすることです。ただし、データが変更される可能性があるためコピーが現実的でない場合は、安全でないパッケージを使用する代替手段があります。
unsafe.Pointer(&value) *(*[]Card)(x)
ここで:
これにより、スライスは次のことを行うことができます。コピーせずに直接変換できます。ただし、このメソッドを慎重に使用し、型チェックのバイパスに伴う固有のリスクを認識することが重要です。
Go コミュニティ内では、再帰的に等価な型間の変換を許可することについて議論がありました。しかし、そのような提案は現時点ではまだ実行されていません。
以上がGo で文字列のスライスをカスタム型のスライスに安全に変換するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。