Formatar seu código é uma maneira importante de aprimorar sua legibilidade, consistência e reutilização. Código formatado corretamente é mais fácil de entender, modificar e manter.
Um dos grandes recursos do Go são suas convenções de formatação bem definidas. Você pode usar o pacote de formatação integrado e o comando go fmt para formatar automaticamente seu código. Isso ajudará a garantir que outros programadores Go possam lê-lo o mais facilmente possível.
O pacote de formatos e o comando fmt
O formatar pacote implementa formatação padrão para o Ir código-fonte. O pacote interopera com o vai formatar ferramenta de linha de comando para flexibilidade na formatação do código Go.
O pacote format é um submódulo do pacote go. Veja como você pode importá-lo:
importar"ir/formatar"
Você pode navegar na documentação do comando go fmt especificando o ajuda comando antes do fmt comando:
vai ajudar fmt
Especifique um nome de arquivo após o comando fmt para formatar esse arquivo. Isso ajustará o espaço em branco e o recuo do seu código para estar em conformidade com os padrões do Go.
ir fmt main.go
Nos bastidores, go fmt é um alias para o comando gofmt, especificamente:
gofmt -l -w
Esses sinalizadores fazem com que o gofmt grave quaisquer alterações em cada arquivo fornecido e liste os nomes dos arquivos que ele altera.
Você pode adicionar o -x flag para o comando fmt. O sinalizador -x ajuda a gravar alterações do formatador no arquivo original.
go fmt -x main.go
O -n sinalizador funciona de forma semelhante a -x, mas não faz alterações. Em vez disso, ele exibe os comandos que o go fmt executaria sem o -n:
go fmt -n main.go
O sinalizador informa ao formatador para mostrar as alterações, o que permite revisá-las antes de aplicá-las.
Aqui está um programa Go simples que percorre inteiros de zero a cinco e imprime a string “Hello World!”.
// formatando um arquivo chamado main.go como mostrado no exemplo acima
pacote principal
importar"fmt"
funçãoprincipal() {
var x int=5
para eu:=0;eu fmt. Imprimirln("Olá Mundo!")
}
}
Formatando o código-fonte do Go
O pacote de formato contém um Fonte função para formatar arquivos Go de programas. Você terá que ler o arquivo e passar o conteúdo como argumentos para a função Source.
A função Source retornará o conteúdo do arquivo formatado que você pode gravar no arquivo ou em um novo.
Você pode ler arquivos com o ReadFile função do ioutil pacote. A função ReadFile recebe o nome do arquivo e retorna o conteúdo do arquivo e um erro de manipulação.
fileContent, err := ioutil. ReadFile("main.go")
se erro != nada {
registro. Fataln("Ocorreu um erro ao ler o arquivo", erro)
}
Passar o conteúdo do arquivo para a função Source retorna o conteúdo do arquivo formatado e um erro de manipulação.
formatado, erro := formato. Origem (arquivoConteúdo)
se erro != nada {
registro. Fataln("Ocorreu um erro de formatação com a função de origem", erro)
}
Você pode gravar o conteúdo do arquivo formatado no arquivo com a WriteFile função do ioutil pacote. A função WriteFile recebe o nome do arquivo, conteúdo e modo de permissão de arquivo, retornando qualquer(s) erro(s). O modo de permissão só é relevante se o arquivo não existir, caso em que WriteFile o criará.
O 0644 o modo de permissão de arquivo fornece:
- As permissões de leitura e gravação do proprietário do arquivo.
- Permissões de leitura para outros usuários no mesmo grupo que o proprietário.
- Sem permissões para outros usuários.
erro = ioutil. WriteFile("main.go", formatado, 0644)
se erro != nada {
registro. Fataln("Ocorreu um erro ao gravar o arquivo", erro)
}
Como alternativa, você pode passar o código-fonte Go para a função Source para formatação. Você pode especificar o código em uma fatia de byte usando ticks (`):
pacote principal
importar (
"fmt"
"ir/formatar"
)funçãoprincipal() {
// programa simples que calcula a área de um triângulo com a matemática
// função
formatado, erro := formato. Fonte([]byte(`
pacote principal
importar(
"fmt"
"matemática"
)
funçãoprincipal(){
var a float64=3
var b float64=4
var c float64=5
var s float64=(a+b+c)/2
var área float64= matemática. Sqrt (s*(s-a)*(s-b)*(s-c))
fmt. Imprimirln("A área do triângulo é: ",área)
}
`))
se erro != nada {
registro. Fataln("Ocorreu um erro de formatação com a função de origem", erro)
} outro {
fmt. Imprimirln(corda(formatado))
}
}
Na formatação, você precisará converter a fatia de byte em string com o corda função. Aqui está o código-fonte formatado.
Personalizando o processo de formatação
Você pode personalizar o processo de formatação com o pacote de formatos configuração struct. A estrutura Config contém campos onde você pode especificar opções de formato na instanciação.
importar"ir/formatar"
config := &formato. Configuração{
// Tabwidth define o número de espaços por tabulação.
Largura da guia: 8,// UseTabs indica se o formatador deve usar tabs em vez de
// espaços.
Usar guias: falso,// TabIndent é usado para determinar se o recuo inicial deve ser
// feito usando tabulações ou espaços.
TabIndent: verdadeiro,// NoFinalTab especifica se uma tabulação final deve ser removida de
// linhas antes de serem formatadas.
NoFinalTab: verdadeiro,// Espaços especifica se espaços devem ser usados para alinhamento.
Espaços: verdadeiro,
// NoTrimTrailingSpace especifica se o espaço em branco à direita deve
// ser cortado das linhas antes de serem formatadas.
NoTrimTrailingSpace: falso,
}
Você pode usar os campos para personalizar o comportamento do seu formatador definindo as opções com base em seus requisitos.
Você pode usar o método Source dessa estrutura para formatar uma fatia de byte com base em sua configuração.
funçãoprincipal() {
fileContent, err := ioutil. ReadFile("main.go")// note que este é um método Source do tipo `config`, não do
// pacote `format` em si, embora a funcionalidade seja a mesma, você
// precisa aderir a isso se precisar configurar o formatador
formatado, erro := config. Origem (arquivoConteúdo)se erro != nada {
registro. Fataln("Ocorreu um erro de formatação com o tipo de configuração", erro)
}
ioutil. WriteFile("main.go", formatado, 0644)
}
Chamando o config. A função Source() como esta formata o conteúdo do main.go usando as opções de configuração. Ele retorna o conteúdo formatado como uma fatia de byte e um erro.
Você pode formatar e manipular string em Go
O pacote format e o comando go fmt podem ajudá-lo a automatizar o processo de formatação do código.
Go também fornece um pacote fmt para formatação de strings e um pacote de strings para manipulação de strings.
O pacote fmt implementa E/S formatada mais simples com funções análogas às funções printf e scanf do C. A função strings implementa funções simples para manipular strings codificadas em UTF-8.