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

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

DDD
DDDオリジナル
2024-12-07 14:13:15832ブラウズ

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。