Go golang, syntax error: unexpected ++, expecting :

Go Frequently Asked Questions (FAQ)

Why are ++ and — statements and not expressions? And why postfix,
not prefix?

Without pointer arithmetic, the convenience value of pre- and postfix
increment operators drops. By removing them from the expression
hierarchy altogether, expression syntax is simplified and the messy
issues around order of evaluation of ++ and — (consider f(i++) and
p[i] = q[++i]) are eliminated as well. The simplification is
significant. As for postfix vs. prefix, either would work fine but the
postfix version is more traditional; insistence on prefix arose with
the STL, a library for a language whose name contains, ironically, a
postfix increment.

The Go Programming Language Specification

IncDec statements

The “++” and “–” statements increment or decrement their operands by
the untyped constant 1. As with an assignment, the operand must be
addressable or a map index expression.

IncDecStmt = Expression ( "++" | "--" ) .

The following assignment statements are semantically equivalent:

IncDec statement    Assignment
x++                 x += 1
x--                 x -= 1


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]

Which, in your particular case, simplifies to,

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]

Leave a Comment