Table of Contents
Correct answer
Home Backend Development Golang How does type reflection for implicit types work?

How does type reflection for implicit types work?

Feb 06, 2024 am 09:30 AM
implicit type conversion

How does type reflection for implicit types work?

Question content

As far as I know, go is statically typed and usually does not perform implicit type conversion. Therefore, constants without an explicit type declaration are subject to requirements on first use.

So, in the code snippet below, I want n to be float64, because that's what math.sin expects. But when printing out the reflected type, I see 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"
}
Copy after login

What exactly happened here? n Is there actually an implicit int type? Or reflection won't show actual type cases like this? I don't think math.sin is typecasting its argument because the compiler will throw an error if I specify an explicit type.


Correct answer


[The type of untyped constant] depends on the requirements for first use.

This is where you got it wrong. A type is selected independently for each use.

math.Sin requires a float64 argument, so the compiler must select float64 here.

reflect.TypeOf takes an interface{} parameter, so the compiler is free to choose any numeric type (since they all implement the empty interface). The default integer type is selected here: int.

The above is the detailed content of How does type reflection for implicit types work?. For more information, please follow other related articles on the PHP Chinese website!

Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

AI Hentai Generator

AI Hentai Generator

Generate AI Hentai for free.

Hot Article

R.E.P.O. Energy Crystals Explained and What They Do (Yellow Crystal)
2 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Best Graphic Settings
2 weeks ago By 尊渡假赌尊渡假赌尊渡假赌

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

What implicit type conversions exist in mysql? What implicit type conversions exist in mysql? Nov 14, 2023 am 11:28 AM

The implicit type conversions that exist in MySQL include string to numeric types, date and time types, floating point and integer types, NULL values, etc. Detailed introduction: 1. Implicit type conversion from string to numeric type. When a string is compared or calculated with a value of numeric type, MySQL will convert the string into numeric type; 2. Implicit type conversion of date and time types. Implicit type conversion, in MySQL, date and time types can also perform implicit type conversion with other data types; 3. Implicit type conversion of floating point and integer types, etc.

What are implicit type conversions and explicit type conversions in C language? What are implicit type conversions and explicit type conversions in C language? Sep 08, 2023 pm 10:13 PM

Converting one data type to another is called type conversion. Implicit Type Conversion Explicit Type Conversion Implicit Type Conversion The compiler provides implicit type conversion when the operands have different data types. It is done automatically by the compiler by converting smaller data types to larger data types. inti,x;floatf;doubled;longintl;Here, the above expression finally evaluates to a "double" value. Example The following is an example of implicit type conversion-intx;for(x=97;x<=122;x++){ printf("%c",x);/*Im

Comparison of the advantages and disadvantages of C++ function default parameters and variable parameters Comparison of the advantages and disadvantages of C++ function default parameters and variable parameters Apr 21, 2024 am 10:21 AM

The advantages of default parameters in C++ functions include simplifying calls, enhancing readability, and avoiding errors. The disadvantages are limited flexibility and naming restrictions. Advantages of variadic parameters include unlimited flexibility and dynamic binding. Disadvantages include greater complexity, implicit type conversions, and difficulty in debugging.

Type conversion of golang function Type conversion of golang function Apr 19, 2024 pm 05:33 PM

In-function type conversion allows data of one type to be converted to another type, thereby extending the functionality of the function. Use syntax: type_name:=variable.(type). For example, you can use the strconv.Atoi function to convert a string to a number and handle errors if the conversion fails.

Detailed explanation of static types in Go language Detailed explanation of static types in Go language Apr 07, 2024 pm 05:42 PM

The Go language uses static typing and performs type checking at compile time to avoid runtime type errors. Basic types include integers, floats, booleans, strings, and byte slices. Composite types include arrays, slices, structures, interfaces, and channels. Go language supports type inference and various type conversion operators. Type aliases facilitate code readability and maintainability. Static typing brings security, performance, and maintainability advantages.

Several situations of mysql index failure Several situations of mysql index failure Feb 21, 2024 pm 04:23 PM

Common situations: 1. Use functions or operations; 2. Implicit type conversion; 3. Use not equal to (!= or <>); 4. Use the LIKE operator and start with a wildcard; 5. OR conditions; 6. NULL Value; 7. Low index selectivity; 8. Leftmost prefix principle of composite index; 9. Optimizer decision; 10. FORCE INDEX and IGNORE INDEX.

Implicit type conversion: An exploration of different variations of types and their applications in programming Implicit type conversion: An exploration of different variations of types and their applications in programming Jan 13, 2024 pm 02:54 PM

Explore the different types of implicit type conversions and their role in programming Introduction: In programming, we often need to deal with different types of data. Sometimes, we need to convert one data type to another type in order to perform a specific operation or meet specific requirements. In this process, implicit type conversion is a very important concept. Implicit type conversion refers to the process in which the programming language automatically performs data type conversion without explicitly specifying the conversion type. This article will explore the different types of implicit type conversions and their role in programming,

What is the difference between int and float in c language What is the difference between int and float in c language Apr 29, 2024 pm 10:12 PM

The difference between int and float variables in C language is that they have different types: int is used to store integers, while float is used to store decimals. Storage size: int usually takes 4 bytes, and float also takes 4 bytes. Precision: int represents an exact integer, while float has limited precision. Range: int typically ranges from -2^31 to 2^31-1, while float has a wider range. Arithmetic operations: int and float can perform arithmetic operations and comparisons, but the results may be affected by precision limitations. Type conversion: Explicit or implicit type conversion can be performed between int and float.

See all articles