Bahasa Go mempunyai lekukan. Dalam bahasa Go, lekukan boleh diformat secara langsung menggunakan alat gofmt (gofmt menggunakan tab untuk lekukan);
Persekitaran pengendalian tutorial ini: sistem Windows 7, GO versi 1.18, komputer Dell G3.
Go gaya kod bahasa
(1) Inden dan pemisah baris
Indentation Hanya gunakan alat gofmt untuk memformat secara langsung (gofmt menggunakan lekukan tab). gofmt ialah alat yang memformat kod sumber dengan gaya standard lekukan dan penjajaran menegak, malah komen diformatkan semula jika perlu.
Dari segi pemisah baris, panjang maksimum baris tidak boleh melebihi 120 aksara Jika melebihi, sila gunakan pemisah baris untuk dipaparkan dan cuba mengekalkan format yang paling elegan
Kami menggunakan alat pembangunan GoLand dan terus menggunakan kekunci pintasan: Ctrl Alt L Itu sahaja.
(2) Penghujung pernyataan
Dalam bahasa Go, tidak perlu diakhiri dengan koma bertitik serupa dengan Java Secara lalai, satu baris adalah satu sekeping data.
Jika anda bercadang untuk menulis berbilang kenyataan pada baris yang sama, ia mesti digunakan.
(3) Kurungan dan ruang
Dari segi kurungan dan ruang, anda juga boleh terus menggunakan alat gofmt untuk memformat (go akan memaksa pendakap kiri untuk tidak bungkus, dan baris baharu akan melaporkan ralat sintaks), biarkan ruang antara semua operator dan operan.
//正确的方式 if a > 0 { } //错误的方式 if a>0 // a,>,0之间应该使用空格 { //左大括号不可以换行,会报语法错误 }
(4) Spesifikasi import
Apabila mengimport berbilang baris, goimports akan memformatkannya secara automatik untuk anda jika anda memperkenalkannya dalam fail Untuk pakej, adalah disyorkan untuk menggunakan format berikut:
import { "fmt" }
Jika pakej anda memperkenalkan tiga jenis pakej, pakej perpustakaan standard, pakej dalaman program dan pakej pihak ketiga, adalah disyorkan untuk menyusun pakej anda dalam cara berikut
inport{ "encoding/json" "strings" "myproject/models" "myproject/controller" "github.com/astaxie/beego" }
Perkenalkan pakej mengikut tertib. [Cadangan berkaitan: Pergi tutorial video]
Jangan gunakan laluan relatif untuk memperkenalkan pakej dalam projek
(5) Pengendalian ralat
Prinsip pengendalian ralat ialah anda tidak boleh membuang sebarang panggilan yang kembali ralat Jangan gunakan _buang, semua mesti diproses. Apabila menerima ralat, sama ada kembalikan ralat atau gunakan log untuk merekodkannya
Kembalikan secepat mungkin: Sebaik sahaja ralat berlaku, kembali segera
Cuba untuk tidak menggunakannya panik, melainkan anda tahu apa yang anda lakukan
Penerangan ralat mestilah dalam huruf kecil jika dalam bahasa Inggeris, tiada tanda baca diperlukan pada penghujung
Gunakan pemprosesan Strim ralat bebas
// 错误写法 if err != nil { // error handing } else { //normal code } // 正确写法 if err != nil { // error handing return // or continue, etc. } // normal code
(6) Ujian
Fail ujian unit konvensyen penamaan ialah example_test.go
test Nama fungsi use case mesti bermula dengan Test
Setiap fungsi penting mesti terlebih dahulu menulis test case dan kod biasa diserahkan bersama untuk memudahkan ujian regresi
go Perintah gofmt bahasa
gofmt ialah perintah tunggal yang digunakan untuk memformat kod sumber Go. Ia menggunakan tab untuk lekukan dan ruang untuk penjajaran. Penjajaran menganggap editor menggunakan fon lebar tetap. Jika tiada laluan dinyatakan secara eksplisit, ia akan memproses input standard yang diberikan fail, ia akan memproses fail tersebut dengan folder, ia akan memproses semua fail .go secara rekursif di bawah folder (kecuali fail tersembunyi). Secara lalai, gofmt akan mencetak kod yang diformat semula kepada output standard (daripada mengemas kini fail sumber secara terus).
digunakan seperti berikut:
gofmt [flags] [path ...]
bendera adalah seperti berikut:
-d Kod yang diformat semula tidak lagi dicetak ke output standard. Jika format kod fail tidak konsisten dengan gofmt, cetak perbezaan kepada output standard (bendera ini serupa dengan arahan git diff).
-e Cetak semua ralat (termasuk ralat palsu).
-l Kod yang diformat semula tidak lagi dicetak kepada output standard. Jika format kod fail tidak konsisten dengan gofmt, cetak nama fail ke output standard. Peraturan
-r menggunakan peraturan tulis semula yang ditentukan sebelum memformat semula fail sumber.
-s Selepas menggunakan peraturan (jika ada), cuba permudahkan kod.
-w Kod yang diformat semula tidak lagi dicetak kepada output standard. Jika format kod fail tidak konsisten dengan gofmt, gunakan versi gofmt untuk menulis semula. Jika ralat berlaku semasa proses penulisan semula, fail asal akan dipulihkan menggunakan sandaran automatik.
Sokongan penyahpepijatan:
-nama fail cpuprofile Tulis cpuprofile ke fail yang ditentukan.
Nota: Peraturan penulisan semula yang ditentukan oleh bendera -r mestilah dalam bentuk rentetan: pattern -> replacement
Corak dan bahagian gantian mestilah ungkapan Go yang sah . Dalam corak, pengecam huruf kecil satu aksara digunakan sebagai kad bebas untuk memadankan mana-mana subungkapan yang akan digantikan dengan pengecam yang sama sebagai gantian.
当gofmt从标准输入读取时,即接受一个完整的Go程序,也可以是一个程序片段。程序片段必须是语法上有效的声明列表,语句列表或表达式。格式化这种片段时,gofmt会保留前导缩进和前后的空格,以便Go程序的各个部分可以通过gofmt来格式化。
示例
假设源文件(hello.go)内容如下:
package main import "fmt" func main() { x := 2 y := 3// 该行未对齐 str := "Hello Golang~" var greeting string greeting = (str)// 本行含有不必要的括号 fmt.Println(greeting) fmt.Println("x*y =", ((x) * y))// 本行含有不必要的括号 s := []int{1, 3, 5, 6, 7}// 切片 start := 2 sub := s[start:len(s)]// 本行可以优化切片s上界 fmt.Println(s) fmt.Println(sub) }
1.检查文件中不必要的括号(如果有,则输出文件名):
gofmt -r '(a) -> a' -l *.go
将会输出hello.go
2.移除括号:
gofmt -r '(a) -> a' -w *.go
源文件将变成如下格式:
package main import "fmt" func main() { x := 2 y := 3 // 该行未对齐 str := "Hello Golang~" var greeting string greeting = str // 本行含有不必要的括号 fmt.Println(greeting) fmt.Println("x*y =", x*y) // 本行含有不必要的括号 s := []int{1, 3, 5, 6, 7} // 切片 start := 2 sub := s[start:len(s)] // 本行可以优化切片s上界 fmt.Println(s) fmt.Println(sub) }
注意看带注释的行发生的变化。
3.当前目录下,从显式切片上界转换为隐式切片上界:
gofmt -r 'α[β:len(α)] -> α[β:]' -w ./
源文件第22行将变成如下:
sub := s[start:] // 本行可以优化切片上限
代码简化
使用-s调用gofmt时,将尽可能进行以下转换:
以下数组,切片或映射的复合字面量形式:
[]T{T{}, T{}}Salin selepas log masuk将被简化为:
[]T{{}, {}}Salin selepas log masuk以下切片表达式形式:
s[a:len(s)]Salin selepas log masuk将被简化为:
s[a:]Salin selepas log masuk以下range形式:
for x, _ = range v {...}Salin selepas log masuk将被简化为:
for x = range v {...}Salin selepas log masuk以下range形式:
for _ = range v {...}Salin selepas log masuk将被简化为:
for range v {...}Salin selepas log masuk注意:这些改变可能与早期版本的Go不兼容。另外,官方文档中指出:
-r标识性能有点慢;
-w如果失败,还原后的源文件可能会丢失某些文件属性。
更多编程相关知识,请访问:编程视频!!
Atas ialah kandungan terperinci Adakah bahasa Go mempunyai lekukan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!