私の知る限り、goは静的に型付けされており、通常は暗黙的な型変換を行いません。したがって、明示的な型宣言のない定数は、最初の使用時に要件が適用されます。
したがって、以下のコード スニペットでは、n
を float64
にしたいとします。これは、math.sin
が期待しているものだからです。しかし、反映されたタイプを印刷すると、int
が表示されます。
ここで一体何が起こったのでしょうか? n
実際に暗黙的な int 型は存在するのでしょうか?それとも、リフレクションではこのような実際の型のケースは表示されませんか?明示的に型を指定するとコンパイラがエラーをスローするため、math.sin
がその引数を型キャストしているとは思えません。
[型なし定数の型]は、初回使用時の要件によって異なります。
ここがあなたが間違っているところです。用途に応じて独自にタイプを選択します。
math.Sin には float64 引数が必要なので、コンパイラはここで float64 を選択する必要があります。
reflect.TypeOf はインターフェース パラメータを取るため、コンパイラは任意の数値型を自由に選択できます (数値型はすべて空のインターフェースを実装しているため)。ここではデフォルトの整数型 int が選択されています。
以上が暗黙的な型の型リフレクションはどのように機能しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。