仅使用1'if'语句而不使用'else'&没有开关和没有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))
}
}
上面的函数在for循环中调用,如下所示:
func main() {
var i uint32
for i = 0; i < 255; i++ {
Wheel(i)
}
}
Color函数定义如下:
func Color(r uint32, g uint32, b uint32) uint32 {
return (r << 16) | (g << 8) | b
}
我从这样的事情开始:
func Wheel(WheelPos uint32) {
if (WheelPos < 85) || (WheelPos >= 85) || (WheelPos > 170) {
// logic....
}
}
答案 0 :(得分:1)
我不知道你将如何重构代码,并以某种方式保持清晰和足够表达。
如果你只考虑三个案例,那么将它们分成三个单独的if / else是编写这些案例的最简单方法。
答案 1 :(得分:0)
技术上可行:您可以为>170
案例创建if语句,然后定义170个函数指针的数组,并对其他两个案例使用索引操作。我想不出一个合理的案例,这个解决方案实际上比你现有的解决方案更好。