2015-03-05 12 views
5

Ich habe eine einfache Funktion, die prüft, ob eine Zeichenfolge eine ganze Zahl istPassing Zuordnungsparameter in Golang

func testInt(str string, m map[bool]) int { 
    _,e := strconv.ParseInt(str, 0, 64); 
    return m[nil == e] * 7; 
} 

wo die Karte m[true] = 1 enthält geben wird, m[false] = 0. Allerdings, wenn ich diese Go klagt

1: syntax error: unexpected) 

zu laufen versuchen Entweder ich kann nicht Karten um als Parameter auf diese Weise passieren oder ich diese völlig falsch mache. Auf jeden Fall würde ich schätze sehr etwas Hilfe

+2

Nicht sicher, ich mag die Praxis der "ternären Operator" -Schalter, die mittels einer wahren/falschen Karte implementiert werden. Dies ist eine Form der Verschleierung. Wenn Sie "wenn" meinen, sagen Sie "wenn". –

+0

@Rick - wenn dir die Art nicht gefällt, schreibe ich meinen Code, der dein Privileg ist. Die Entscheidung, eine Frage zu verwerfen, die in den Aufgabenbereich dieses Forums fällt, zeigt eine Anstrengung bei der Forschung und wurde mit angemessener Klarheit formuliert, um innerhalb weniger Minuten eine Antwort zu erhalten, ist eher OTT. Trotzdem, ich nehme an, das hat deinen Tag gemacht. – DroidOS

+0

Ich habe nicht abgestimmt. –

Antwort

8

A map Karten Tasten auf Werte, mit der Syntax

map[KeyType]ValueType 

(siehe https://blog.golang.org/go-maps-in-action)

In Ihrer Funktion sind Sie ein ValueType nicht angegeben, verursacht diesen Syntaxfehler. Es sieht so aus, als ob Sie eine map[bool]int möchten.

+0

Ja, das funktioniert. Angesichts der Philosophie von Go ist das logisch - im Nachhinein :-) – DroidOS