如果我有這個純函式:
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
理論上,編譯器應該能夠看到這些值是恒定的。
有沒有辦法做這樣的事情?像將函式定義為純函式或其他一些技巧來幫助編譯器?
uj5u.com熱心網友回復:
該函式必須被評估,所以它不是一個常數,不能這樣使用。
您可以使用的是var.
常量定義為:
有布爾常量、符文常量、整數常量、浮點常量、復數常量和字串常量。符文、整數、浮點數和復數常量統稱為數字常量。
使用var:
var str1 = PureFunction(0)
var str1 = PureFunction(4)
var str1 = PureFunction(5)
uj5u.com熱心網友回復:
必須能夠在編譯時分配常量。const 的值不能是運行時計算的結果。函式在運行時進行評估,因此不能用于宣告const。
如果你甚至做了這樣的事情,其中值根本不會改變,編譯器仍然會給你一個錯誤。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/393707.html
上一篇:創建并發物件會顯著減慢執行時間
下一篇:中間件中的grpc連接時間度量
