Тип switch не обнаруживает float32 - PullRequest
0 голосов
/ 04 января 2019
package main

import "fmt"

func main() {
    printType(4.0)
}

func printType(i interface{}) {
    switch i := i.(type) {
    case float32:
        fmt.Println("This is a float type", i)
    }
}

По какой-то причине этот код не определяет значение 4.0 как float32, но обнаруживает его как float64 - почему это так? Я запускаю его на машине win x64.

1 Ответ

0 голосов
/ 04 января 2019

По какой-то причине этот код не определяет значение 4.0 как float32, но обнаруживает его как float64 - почему это так?

Поскольку float64 является типом по умолчанию для нетипизированной константы с плавающей точкой. Соответствующая часть подчеркнута:

Нетипизированная константа имеет тип по умолчанию, то есть тип, в который константа неявно преобразуется в контекстах, где требуется типизированное значение, например, в коротком объявлении переменной, таком как i: = 0, где нет явного типа , Тип по умолчанию для нетипизированной константы: bool, rune, int, float64 , complex128 или строка соответственно, в зависимости от того, является ли она логическим значением, руной, целым числом , с плавающей точкой , сложный или строковый константа .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...