【发布时间】:2022-01-23 08:08:24
【问题描述】:
如果我有这个纯函数:
func PureFunction(x int) string {
switch x {
case 0:
return "String zero"
case 4:
return "String four"
default:
return "Default string"
}
}
并希望在这样的常量声明中使用它:
const str1 = PureFunction(0)
const str1 = PureFunction(4)
const str1 = PureFunction(5)
我得到错误:
PureFunction(0) (value of type string) is not constant
PureFunction(4) (value of type string) is not constant
PureFunction(5) (value of type string) is not constant
理论上编译器应该能够看到这些值是常量。
有没有办法做这样的事情?比如将函数定义为纯函数或其他帮助编译器的技巧?
【问题讨论】:
标签: go constants purely-functional