Go'da girinti: sekmeler mi boşluklar mı?


125

Go kaynak kodunda girinti için sekmelerin mi yoksa boşlukların mı tercih edileceğini belirleyen standart bir Google Go kodlama kuralları dokümanı var mı? Değilse, (istatistiksel olarak) daha popüler olan seçenek nedir?

  1. Resmi öneri nedir? (varsa)
  2. Daha popüler seçim nedir?

Yanıtlar:


195

Resmi öneri, kodunuzu şu şekilde biçimlendirmektir:

go fmt

veya doğrudan gofmt komutunu kullanarak

gofmt -w .

Bu konuda daha fazla bilgi bulabilirsiniz burada golang.org blog veya gelen Etkili go belgede:

Girinti Girinti
için sekmeler kullanıyoruz ve gofmt varsayılan olarak bunları yayar. Yalnızca gerekiyorsa boşluk kullanın.


59
Tamam, bu yüzden sekmeler.
Erik Kaplun

1
Evet, girinti için sekmeler resmi tavsiyedir. Sen edebilirsiniz @Intermernet işaret ettiği gibi uzay girinti kullanmak, ancak bu öneri değildir.
ANisus

19
@ErikAllik, aslında, resmi pozisyon "sekmeleri kullan" değil, " go fmtkodunuzu göndermeden önce kullanın " (ayrıca olduğunu unutmayın gofmt). Gitmeye çalıştığım şey, Go'nun bu hakkı sadece bir politika ilan ederek değil, onu uygulayan bir araç benimseyerek yapmasıdır. Bu alışılmadık bir durum, bu yüzden kafanızı bu fikir etrafında eğip benimseyin go fmt. Otomatikleştirilmiş çözümlerin bile olduğunu unutmayın (örneğin, Vim için resmi Go eklentisi :Fmt, IIRC komutunu destekler ).
kostix


2
Bir aracı benimsemenin / talep etmenin tüm argümanları durdurmadığını belirtmekte fayda var, ancak bu, insanların sizin fikrinizdeki seçimleriniz için size kızması yerine, aracı kabul ettiğiniz için size (ve araç üreticilerine) görüşlü seçimleri).
mtraceur

22

DÜZENLEME 2: En alttaki orijinal cevap artık yanlış. Bağlantılı kaynak dosyanın doğru bölümü (mevcut 30/12/2019):

Gofmt formatları Go programları. Girinti için sekmeler ve hizalama için boşluklar kullanır. Hizalama, bir düzenleyicinin sabit genişlikli bir yazı tipi kullandığını varsayar.

Bunu işaret ettiği için TehSphinX'e teşekkürler !

BU SATIRIN ALTINDAKİ TÜM BİLGİLER ŞİMDİ YANLIŞ

DÜZENLEME: En alttaki orijinal cevap artık yanlış. Bağlantılı kaynak dosyanın doğru bölümü (mevcut 25/07/2014):

Gofmt formatları Go programları.
Girinti için sekmeler (genişlik = 8) ve hizalama için boşluklar kullanır.

Orijinal yanıt (kullanımdan kaldırıldı):

Formatting control flags:
    -comments=true
        Print comments; if false, all comments are elided from the output.
    -tabs=true
        Indent with tabs; if false, spaces are used instead.
    -tabwidth=8
        Tab width in spaces.

4
-tabsve -tabwidthedilir gitmiş (ve -comments; daha yakından bakmadım artık en azından belgelenmiştir)
William

2
@billisphere Teşekkürler, yanıtı bağlantılı dosyanın ilgili bölümüyle güncelledim.
Intermernet

5
Sekme karakterlerini kullandığınızda, belirli bir sekme genişliğini kullanmak gibi bir şey yoktur, bu nedenle (eski) sekme genişliği seçeneğinin bir etkisi yoktur ve güncellenen metnin "width = 8" kısmı kaldırılmalıdır. Görüntüleyicide sekme genişliği yapılandırılır Bu hata, bağlantılı kaynakta da mevcut.
thomasrutter

2
Bu modası geçmiş. gofmtKomutun belgelerinde artık bir sekme genişliğinden söz edilmiyor . Buradan kaldırıldı: github.com/golang/go/commit/…
TehSphinX
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.