func test(args ...string) {
var msg map[string] interface{}
i := 0
msg["product"] = args[i++]
msg["key"] = args[i++]
msg["signature"] = args[i++]
msg["string_to_sign"] = args[i++]
}
go build utils.go
编译后,我得到错误信息
./utils.go:28: syntax error: unexpected ++, expecting :
./utils.go:28: missing statement after label
./utils.go:29: syntax error: unexpected ++, expecting :
./utils.go:30: syntax error: unexpected ++, expecting :
./utils.go:31: syntax error: unexpected ++, expecting :
./utils.go:36: syntax error: unexpected ++, expecting :
./utils.go:37: syntax error: unexpected ++, expecting :
为什么我不能将i ++放在切片索引中?切片索引有什么限制吗?
如果不使用指针算法,则前缀和后缀增量运算符的便利性值会下降。通过将它们从表达式层次结构中完全删除,可以简化表达式语法,并且还消除了围绕++和-(考虑f(i ++)和p [i] = q [++ i])的求值的混乱问题。 。简化意义重大。至于后缀和前缀,两者都可以正常工作,但后缀版本更传统。STL是对语言前缀的坚持,而STL是一种语言库,具有讽刺意味的是,其名称包含后缀增量。
“ ++”和“-”语句将它们的操作数增加或减少非类型常量1。与赋值一样,该操作数必须是可寻址的或映射索引表达式。
IncDecStmt = Expression ( "++" | "--" ) .
以下赋值语句在语义上是等效的:
IncDec statement Assignment x++ x += 1 x-- x -= 1
写,
func test(args ...string) {
var msg map[string]interface{}
i := 0
msg["product"] = args[i]
i++
msg["key"] = args[i]
i++
msg["signature"] = args[i]
i++
msg["string_to_sign"] = args[i]
}
在您的特定情况下,可以简化为:
func test(args ...string) {
var msg map[string]interface{}
msg["product"] = args[0]
msg["key"] = args[1]
msg["signature"] = args[2]
msg["string_to_sign"] = args[3]
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句