Welche allgemeinen Tipps haben Sie zum Golfen in Go? Ich bin neu in Code Golfing und suche nach Ideen, die bei Code-Golf-Problemen im Allgemeinen angewendet werden können, die zumindest etwas spezifisch für Go sind.
Bitte halten Sie sich an einen Tipp pro Antwort.
Go
Tag erstellen , aber wird Go hier überhaupt zum Golfen verwendet?Antworten:
Inspiriert von der Antwort von @ EMBLEM hier .
Sie können die Funktionen eines Pakets in den globalen Namespace einfügen, wenn Sie sie wie folgt importieren:
quelle
Sie können Pakete beim Import beliebig benennen.
Das habe ich hier gelernt .
quelle
import ."fmt"
und dann ausführen,Println
und der Rest derfmt
Funktionen befindet sich im globalen Namespace. Außerdem benötigen Sie keine Semikolons. Es sei denn, Sie haben mehrere Aussagen in einer ZeileMit benannten Rückgabewerten können einige Bytes eingespart werden. Beispielsweise:
Mit können Sie 3 Bytes einsparen
Dies ist nützlicher, wenn Sie zu Beginn Ihrer Funktion mehrere Variablen deklarieren müssen.
quelle
Wenn Sie viele verschiedene Werte mit einem einzigen vergleichen müssen, ist es möglicherweise platzsparender, a
switch
für einen einzelnen Fall zu verwenden.quelle
Mehrere Variablen deklarieren:
Int From String Conversion: (eingeschränkt, aber manchmal hilfreich)
Und umgekehrt
quelle
fmt.Sprint
wird wahrscheinlich Bytes sparenstrconv.Atoi
, weil Sie wahrscheinlichfmt
bereits importiert haben .strconv
war nur da, um zu zeigen, wie der Golf-Code im normalen Code wäre.Go Compiler hat vordefiniert
print
undprintln
Funktionen , die nicht erfordern fmt importieren, so dass anstelle dieser.Sie können dies schreiben.
Beachten Sie, dass dies an STDERR ausgegeben wird.
quelle
Vieles in der for-Range-Schleife ist optional.
Standard Version:
Wenn
i
,v
wurde bereits definiert und kann überschrieben werden:Wenn Ihnen der Wert egal ist:
Wenn Ihnen der Wert egal ist und
i
bereits definiert wurde:Wenn Sie sich nicht für Index oder Wert interessieren:
Wenn Sie eine Endlosschleife wollen:
quelle
Benötigen Sie eine Zeichenfolge, die eine neue Zeile enthält? Schreiben Sie nicht
\n
, erstellen Sie einen rohen String mit Anführungszeichen und setzen Sie einen wörtlichen Zeilenumbruch ein.quelle
Sie können eine beliebige Anzahl von öffnenden Klammern in eine Zeile einfügen, aber eine Zeile, die öffnende Klammern enthält, darf höchstens eine schließende Klammer enthalten.
Richtig:
Auch richtig:
Auch richtig:
Falsch:
quelle
Go unterschiedliche Betreiber Vorrang für Bit - Operationen hat,
<<
,>>
,&
etc. haben in der Regel niedrigere Priorität als+
und-
in den meisten Sprachen, aber in Go sie haben die gleiche Priorität wie*
und/
.Dies könnte verwendet werden, um einige Klammern zu speichern.
Die meisten Sprachen:
Gehen:
quelle
Nutzen Sie die erstklassigen Funktionen von Go in vollem Umfang, indem Sie langen Bibliotheksfunktionsnamen Variablen mit einem Buchstaben zuweisen.
quelle