Jakie masz ogólne wskazówki na temat gry w golfa w Go? Jestem nowy w Code Golfing i szukam pomysłów, które można zastosować do problemów z golfem w kodzie, które są przynajmniej nieco specyficzne dla Go.
Proszę zachować jedną wskazówkę na odpowiedź.
Go
tag, ale czy Go jest tu nawet używany do gry w golfa?Odpowiedzi:
Zainspirowany odpowiedzią @ EMBLEM tutaj .
Możesz zaimportować funkcje pakietu do globalnej przestrzeni nazw podczas importowania:
źródło
Podczas importowania możesz nazwać paczki, jak chcesz.
Nauczyłem się tego tutaj .
źródło
import ."fmt"
aPrintln
pozostałefmt
funkcje znajdują się w globalnej przestrzeni nazw. Nie potrzebujesz też średników. Zawsze, chyba że masz wiele wypowiedzi w wierszuNazwane wartości zwracane mogą zaoszczędzić kilka bajtów. Na przykład:
Możesz zapisać 3 bajty za pomocą
Jest to bardziej przydatne, jeśli musisz zadeklarować wiele zmiennych na początku swojej funkcji.
źródło
Jeśli musisz porównać wiele różnych wartości do jednej, może być bardziej zajmujące miejsce użycie
switch
pojedynczego przypadku.źródło
Deklarowanie wielu zmiennych:
Konwersja tekstu z ciągu: (ograniczona, ale czasem pomocna)
I wzajemnie
źródło
fmt.Sprint
prawdopodobnie zaoszczędzi bajtystrconv.Atoi
, ponieważ prawdopodobniefmt
już zaimportowałeś .strconv
był tam tylko po to, aby pokazać, jaki byłby kod golfowy w normalnym kodzie.Kompilator Go ma predefiniowane funkcje
print
iprintln
funkcje, które nie wymagają importowania fmt, więc zamiast tego.Możesz to napisać.
Zauważ, że dane wyjściowe do STDERR.
źródło
Wiele rzeczy w pętli dla zakresu jest opcjonalne.
Wersja standardowa:
W przypadku
i
,v
została już zdefiniowana i może być zastąpiony:Jeśli nie zależy ci na wartości:
Jeśli nie zależy ci na wartości i
i
zostało już zdefiniowane:Jeśli nie zależy ci na indeksie lub wartości:
Jeśli chcesz mieć nieskończoną pętlę:
źródło
Potrzebujesz ciągu znaków, który zawiera nowy wiersz? Nie pisz
\n
, twórz nieprzetworzony ciąg z cudzysłowami i wstaw w nim dosłowny znak nowej linii.źródło
Możesz umieścić dowolną liczbę nawiasów otwierających w jednym wierszu, ale linia zawierająca nawiasy otwierające może zawierać maksymalnie jeden nawias zamykający.
Poprawny:
Popraw także:
Popraw także:
Błędny:
źródło
Go ma inny priorytet operatora dla operacji bitowych
<<
,>>
,&
, itd. Zazwyczaj mają niższy priorytet niż+
i-
w większości języków, ale idź mają ten sam priorytet jak*
i/
.Można to wykorzystać do zapisania niektórych nawiasów.
Większość języków:
Udać się:
źródło
W pełni wykorzystaj pierwszorzędne funkcje Go, przypisując długie nazwy funkcji bibliotecznych zmiennym jednoliterowym.
źródło