ホームページ > バックエンド開発 > Golang > インターフェイス値のスライスで型アサーションが失敗するのはなぜですか?

インターフェイス値のスライスで型アサーションが失敗するのはなぜですか?

DDD
リリース: 2024-12-07 14:13:15
オリジナル
802 人が閲覧しました

Why Does Type Assertion Fail on a Slice of Interface Values?

インターフェイス値のスライスの型アサーション

ノードのスライスからシンボルのスライスへの型アサートを試行すると、エラーが発生しますが発生した場合は、型アサーションが無効であることを示します。これは、インターフェイス値のスライス自体がインターフェイス型ではないためです。

スライスは別個の非インターフェイス型ですが、インターフェイス型はメソッドのセットを定義します。したがって、インターフェイス値のスライスもインターフェイス型であると仮定することは意味がありません。

この問題を解決するには、Node のスライスを直接アサートする型の代わりに、スライスの各要素を変換できます。目的のタイプ (この場合はシンボル) に変更し、目的のタイプの新しいスライスを作成します。たとえば、次のコードは望ましい結果を達成します:

symbols := make([]Symbol, len(args))
for i, arg := range args { symbols[i] = arg.(Symbol) }
fixed, rest := parseFormals(symbols)
ログイン後にコピー

以上がインターフェイス値のスライスで型アサーションが失敗するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート