Saya bisa menemukan konvensi untuk menamai paket di Go: tidak ada garis bawah di antara kata-kata, semuanya huruf kecil.
Apakah konvensi ini juga berlaku untuk nama file?
Apakah Anda juga meletakkan satu struct dalam satu file seperti yang Anda lakukan untuk kelas java dan kemudian menamai file tersebut setelah struct?
Saat ini, jika saya memiliki struct WebServer, saya memasukkannya ke dalam file web_server.go.
go
naming-conventions
David
sumber
sumber
Jawaban:
Ada beberapa pedoman untuk diikuti.
_test.go
hanya dikompilasi dan dijalankan olehgo test
alat.name_linux.go
hanya akan dibangun di linux,name_amd64.go
hanya akan dibangun di atas amd64. Ini sama dengan memiliki//+build amd64
garis di bagian atas fileLihat dokumen
go build
alat untuk mengetahui detail selengkapnya: https://golang.org/pkg/go/build/sumber
unix
danothers
. Misalnya saya bisa membuat dua filefile_windows.go
danfile_others.go
. Ini bekerja dengan baik. Tapi untukfile_unix.go
danfile_others.go
itu tidak berhasil. Saya tidak ingin membuat delapan filedarwin freebsg linux openbsd netbsd dragonfly solaris android
.Selain jawaban yang diberikan oleh JimB , nama file biasa adalah huruf kecil, pendek, dan tanpa garis bawah atau spasi apa pun. Umumnya, nama file mengikuti konvensi yang sama dengan nama paket. Lihat Nama Paket bagian Efektif Go .
Lihat paket strconv untuk contoh yang bagus.
sumber
mycommandsub1command.go
ataumy_command_sub1command.go
, dan bagaimana denganmycommandVO
Go cukup liberal dalam hal bagaimana Anda mengatur kode Anda dalam sebuah paket, biasanya itu meningkatkan keterbacaan dan pemahaman kode Anda. Cara terbaik untuk mempelajari bagaimana hal ini dilakukan adalah dengan mempelajari para master, yaitu memiliki penelusuran melalui perpustakaan standar:
http://golang.org/src/pkg/
Ada 2 aturan yang bisa saya pikirkan. Saat menentukan kode yang akan dikompilasi untuk platform yang berbeda, Anda menggunakan nama platform sebagai sufiks:
Juga jika Anda memiliki file yang dipanggil
server.go
, pengujian untuk file itu akan masukserver_test.go
.sumber
_front
,_writer
atau_bits
sebagai sufiks yang signifikan di masa mendatang!go
alatnya sangat membatasi tentang struktur paket (ini salah satu hal favorit saya tentang bahasa). Ini mendukung beberapa konvensi yang sangat spesifik (satu paket per folder [dengan setidaknya satu pengecualian], paket folder memiliki nama yang sama dengan folder [dengan setidaknya satu pengecualian], jalur impor paket lengkap cocok dengan jalur relatif dari$GOPATH
, beberapa file diperlakukan berbeda tergantung pada format nama mereka, dll)Go is quite liberal in terms of how you organise your code within a package
. Go tidak liberal, itu cukup membatasi. Tapi itu bagus.Biasanya garis bawah dalam nama file digunakan untuk menetapkan kode platform / arch-only, misalnya:
sqrt_386.s
hanya akan dibaca oleh kompiler pada prosesor 32bit,sqrt_amd64.s
pada amd64, dll.Ini bisa berupa nilai yang valid dari
GOOS
dan / atauGOARCH
( ref .file_windows_amd64.go
hanya akan dikompilasi di win64.sumber