Que dicas gerais você tem para jogar golfe no Go? Eu sou novo no Code Golfing e procuro idéias que possam ser aplicadas a problemas de código do golf em geral que sejam pelo menos um pouco específicos para o Go.
Por favor, mantenha uma dica por resposta.
Go
tag, mas então, o Go está sendo usado para jogar golfe aqui?Respostas:
Inspirado pela resposta da @ EMBLEM aqui .
Você pode colocar as funções de um pacote no espaço para nome global ao importá-las da seguinte maneira:
fonte
Você pode nomear os pacotes da forma que desejar quando importá-los.
Aprendi isso aqui .
fonte
import ."fmt"
e, em seguida,Println
e as demaisfmt
funções estão no espaço de nomes global. Além disso, você não precisa de ponto e vírgula. Sempre, a menos que você tenha várias instruções em uma linhaOs valores de retorno nomeados podem salvar alguns bytes. Por exemplo:
Você pode salvar 3 bytes com
É mais útil se você precisar declarar várias variáveis no início de sua função.
fonte
Se você precisar comparar muitos valores diferentes a um único, pode ser mais eficiente em termos de espaço usar a
switch
com um único caso.fonte
Declarando várias variáveis:
Int From String Conversion: (limitado, mas às vezes útil)
E vice versa
fonte
fmt.Sprint
provavelmente salvará bytesstrconv.Atoi
, porque você provavelmentefmt
já importou .strconv
estava lá apenas para mostrar qual seria o código de golfe no código normal.O compilador Go tem funções
print
e predefinidasprintln
que não exigem a importação do fmt, portanto, em vez disso.Você pode escrever isso.
Observe que isso gera para STDERR.
fonte
Um monte de coisas no loop for range é opcional.
Versão padrão:
Se
i
,v
já foi definido e pode ser substituído:Se você não se importa com valor:
Se você não se importa com valor e
i
já foi definido:Se você não se importa com índice ou valor:
Se você deseja um loop infinito:
fonte
Precisa de uma string para conter uma nova linha? Não escreva
\n
, crie uma string bruta com aspas e coloque uma nova linha literal nela.fonte
Você pode colocar qualquer número de chaves de abertura em uma linha, mas uma linha que contenha chaves de abertura pode conter no máximo uma chave de fechamento.
Corrigir:
Corrija também:
Corrija também:
Incorreta:
fonte
Go tem diferentes precedência do operador para operações de bit,
<<
,>>
,&
, etc. geralmente têm menor prioridade do que+
e-
na maioria dos idiomas, mas em Go têm a mesma precedência que*
e/
.Isso pode ser usado para salvar alguns parênteses.
Maioria dos idiomas:
Vai:
fonte
Faça pleno uso das funções de primeira classe do Go atribuindo nomes longos de funções de biblioteca a variáveis de uma letra.
fonte