Maison > développement back-end > Golang > le corps du texte

Comment fonctionne la réflexion de type pour les types implicites ?

王林
Libérer: 2024-02-06 09:30:08
avant
902 Les gens l'ont consulté

Comment fonctionne la réflexion de type pour les types implicites ?

Contenu de la question

Pour autant que je sache, go est typé statiquement et n'effectue généralement pas de conversion de type implicite. Par conséquent, les constantes sans déclaration de type explicite sont soumises à des exigences lors de la première utilisation.

Donc, dans l'extrait de code ci-dessous, je veux nfloat64,因为这就是 math.sin 所期望的。但是当打印出反射类型时,我看到了 int.

package main

import (
    "fmt"
    "math"
    "reflect"
)

func main() {
    const n = 5000 // No explict type

        // fmt.Println(reflect.TypeOf(n)) // this would print "int"

    fmt.Println(math.Sin(n)) // math.Sin expects a float64

    fmt.Println(reflect.TypeOf(n)) // print "int"
}
Copier après la connexion

Que se passe-t-il ici ? n 实际上有隐式 int 类型吗?或者反射不会显示这样的实际类型情况?我不认为 math.sin transtype son argument car si je spécifie un type explicite, le compilateur renvoie une erreur.


Bonne réponse


[Type de constante non typée] est basé sur les exigences lors de la première utilisation.

C’est là que vous vous êtes trompé. Un type est sélectionné indépendamment pour chaque utilisation.

math.Sin nécessite un argument float64, le compilateur doit donc choisir float64 ici.

reflect.TypeOf prend un argument interface{}, le compilateur est donc libre de choisir n'importe quel type numérique (puisqu'ils implémentent tous l'interface vide). Le type entier par défaut est sélectionné ici : int.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:stackoverflow.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!