インターフェイス値のスライスの型アサーション
ノードのスライスからシンボルのスライスへの型アサートを試行すると、エラーが発生しますが発生した場合は、型アサーションが無効であることを示します。これは、インターフェイス値のスライス自体がインターフェイス型ではないためです。
スライスは別個の非インターフェイス型ですが、インターフェイス型はメソッドのセットを定義します。したがって、インターフェイス値のスライスもインターフェイス型であると仮定することは意味がありません。
この問題を解決するには、Node のスライスを直接アサートする型の代わりに、スライスの各要素を変換できます。目的のタイプ (この場合はシンボル) に変更し、目的のタイプの新しいスライスを作成します。たとえば、次のコードは望ましい結果を達成します:
symbols := make([]Symbol, len(args)) for i, arg := range args { symbols[i] = arg.(Symbol) } fixed, rest := parseFormals(symbols)
以上がインターフェイス値のスライスで型アサーションが失敗するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。