Я хотел бы создать функцию, которая возвращает целочисленное значение, если условие проходит внутри функции и число с плавающей запятой в противном случае. Как я могу справиться с этим с Go? Спасибо!

go
-1
Zoltan King 2 Май 2019 в 22:54

2 ответа

Лучший ответ

Да, это возможно. Вы просто должны вернуть его как float:

func doStuff(flag bool) float32 {
    if flag {
        return 1.1
    }
    return 1
}

func main() {
    num1 := doStuff(true)
    num2 := doStuff(false)
    fmt.Println("Num1: ", num1)
    fmt.Println("Num2: ", num2)
}

Единственное, что имеет значение, это то, как вы форматируете его для отображения.

Демо

0
Ibu 2 Май 2019 в 20:50

Это не возможно напрямую на Голанге. В целом, статически типизированные языки обычно делают все возможное, чтобы предотвратить этот сценарий, потому что это очень затрудняет проверку типов. Проверка типов необходима, потому что целочисленные значения и числа с плавающей точкой несовместимы по своей природе.

Вы можете вернуть interface{}. Однако, как звонящий узнает, что вы вернули?

2
Christian Hujer 2 Май 2019 в 20:10