只使用 1 個(gè)“if”語句,沒有“else”,沒有開關(guān),也沒有 if-else 的速記符號? // Original function func Wheel(WheelPos uint32) { if WheelPos < 85 { fmt.Println("WheelPos < 85",Color(WheelPos*3, 255-WheelPos*3, 0)) } else if WheelPos < 170 { WheelPos -= 85 fmt.Println("WheelPos >= 85",Color(0, WheelPos*3, 255-WheelPos*3)) } else { WheelPos -= 170 fmt.Println("WheelPos > 170",Color(0, 255-WheelPos*3, WheelPos*3)) } }上面的函數(shù)在 for 循環(huán)中的 main 中被調(diào)用,如下所示: func main() { var i uint32 for i = 0; i < 255; i++ { Wheel(i) } }顏色函數(shù)定義如下: func Color(r uint32, g uint32, b uint32) uint32 { return (r << 16) | (g << 8) | b }我已經(jīng)開始了這樣的事情: func Wheel(WheelPos uint32) { if (WheelPos < 85) || (WheelPos >= 85) || (WheelPos > 170) { // logic.... } }
2 回答

富國滬深
TA貢獻(xiàn)1790條經(jīng)驗(yàn) 獲得超9個(gè)贊
我不知道你會如何重構(gòu)代碼,并以某種方式保持足夠清晰和富有表現(xiàn)力。
如果您只需要考慮三種情況,將它們分成三個(gè)單獨(dú)的 if/else 是對這些情況進(jìn)行編碼的最簡單方法。

嗶嗶one
TA貢獻(xiàn)1854條經(jīng)驗(yàn) 獲得超8個(gè)贊
這在技術(shù)上是可行的:您可以為>170
案例創(chuàng)建一個(gè) if 語句,然后定義一個(gè)包含 170 個(gè)函數(shù)指針的數(shù)組,并對其他兩個(gè)案例使用索引操作。我想不出一個(gè)合理的情況,即此解決方案實(shí)際上比您已有的解決方案更好。
- 2 回答
- 0 關(guān)注
- 202 瀏覽
添加回答
舉報(bào)
0/150
提交
取消