是否有可能在Golang中返回Integer或Float的函数?

时间:2019-05-02 19:54:33

标签: go

我想创建一个函数,如果条件在函数内部传递,则返回整数值,否则返回浮点数。如何使用Go处理?谢谢!

3 个答案:

答案 0 :(得分:2)

在Golang中不可能直接做到这一点。通常,静态类型的语言通常会尽力防止这种情况的发生,因为这会使类型检查变得非常困难。类型检查是必需的,因为整数和浮点本质上是不兼容的。

您可以返回interface{}。但是,呼叫者将如何知道您返回了什么?

答案 1 :(得分:1)

这是您要找的东西吗?

package main

import "fmt"

func number(intOrFloat bool) interface{} {
    if intOrFloat { //return int if this flag is true
        return 5
    }
    return 5.5
}

func main() {
    printType(number(true))
    printType(number(false))
    printType("Nihanth")
}

func printType(value interface{}) {
    if number, ok := value.(int); ok {
        fmt.Printf("I have got an integer %d\n", number)
    } else if number, ok := value.(float64); ok {
        fmt.Printf("I have got float %f\n", number)
    } else {
        fmt.Printf("%+v is not integer or float", value)
    }
}

答案 2 :(得分:0)

是的,有可能。您只需要以浮点数形式返回它即可:

Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'gemfireCache': FactoryBean threw exception on object creation; nested exception is java.lang.ExceptionInInitializerError
at org.springframework.beans.factory.support.FactoryBeanRegistrySupport.doGetObjectFromFactoryBean(FactoryBeanRegistrySupport.java:178)

唯一重要的是如何设置其显示格式。

Demo