Какие общие советы у вас есть для игры в гольф на Го? Я новичок в Code Golfing и ищу идеи, которые можно применить к задачам Code Golf в целом, которые, по крайней мере, несколько специфичны для Go.
Пожалуйста, придерживайтесь одного совета за ответ.
Go
тег, но тогда, Go даже используется для игры в гольф здесь?Ответы:
Вдохновленный ответом @ EMBLEM здесь .
Вы можете поместить функции пакета в глобальное пространство имен при их импорте следующим образом:
источник
При импорте вы можете называть пакеты как угодно.
Узнал это здесь .
источник
import ."fmt"
и тогда,Println
и остальныеfmt
функции в глобальном пространстве имен. Кроме того, вам не нужны точки с запятой. Когда-либо, если у вас нет нескольких утверждений в строкеИменованные возвращаемые значения могут сохранить несколько байтов. Например:
Вы можете сохранить 3 байта с
Это более полезно, если вам нужно объявить несколько переменных в начале вашей функции.
источник
Если вам нужно сравнить много разных значений с одним, может быть более эффективно использовать единицу
switch
с одним регистром.источник
Объявление нескольких переменных:
Int из строки: (ограниченно, но иногда полезно)
Наоборот
источник
fmt.Sprint
может сэкономить байтыstrconv.Atoi
, потому что вы, вероятно,fmt
уже импортировали .strconv
было просто для того, чтобы показать, каким будет гольф-код в нормальном коде.Компилятор Go имеет предопределенные функции
print
иprintln
функции, которые не требуют импорта fmt, поэтому вместо этого.Вы можете написать это.
Обратите внимание, что это выводит на STDERR.
источник
Многое в цикле for является необязательным.
Стандартная версия:
Если
i
,v
уже определены и могут быть перезаписаны:Если вас не волнует ценность:
Если вы не заботитесь о ценности и
i
уже определены:Если вас не волнует индекс или значение:
Если вы хотите бесконечный цикл:
источник
Нужна строка для перевода строки? Не пишите
\n
, создайте необработанную строку с обратными кавычками и вставьте в нее буквальный символ новой строки.источник
Вы можете поместить любое количество открывающих скобок в одну строку, но строка, содержащая открывающие скобки, может содержать не более одной закрывающей скобки.
Правильный:
Также исправьте:
Также исправьте:
Неправильно:
источник
Go имеет различный приоритет оператора для битовых операций,
<<
,>>
,&
и т.д. , как правило , имеют более низкий приоритет , чем+
и-
в большинстве языков, но в Go они имеют одинаковый приоритет , как*
и/
.Это может быть использовано для сохранения некоторых скобок.
Большинство языков:
Идти:
источник
Полностью используйте первоклассные функции Go, присваивая длинные имена библиотечных функций однобуквенным переменным.
источник