Rumah > pembangunan bahagian belakang > Golang > Adakah bahasa Go mempunyai lekukan?

Adakah bahasa Go mempunyai lekukan?

青灯夜游
Lepaskan: 2022-12-01 18:54:57
asal
6649 orang telah melayarinya

Bahasa Go mempunyai lekukan. Dalam bahasa Go, lekukan boleh diformat secara langsung menggunakan alat gofmt (gofmt menggunakan tab untuk lekukan);

Adakah bahasa Go mempunyai 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之间应该使用空格
{       //左大括号不可以换行,会报语法错误
	
}
Salin selepas log masuk

(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"
}
Salin selepas log masuk

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"
}
Salin selepas log masuk

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
Salin selepas log masuk

(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 ...]
Salin selepas log masuk

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)
}
Salin selepas log masuk

1.检查文件中不必要的括号(如果有,则输出文件名):

gofmt -r '(a) -> a' -l *.go
Salin selepas log masuk

将会输出hello.go

2.移除括号:

gofmt -r '(a) -> a' -w *.go
Salin selepas log masuk

源文件将变成如下格式:

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)
}
Salin selepas log masuk

注意看带注释的行发生的变化。

3.当前目录下,从显式切片上界转换为隐式切片上界:

gofmt -r 'α[β:len(α)] -> α[β:]' -w ./
Salin selepas log masuk

源文件第22行将变成如下:

    sub := s[start:] // 本行可以优化切片上限
Salin selepas log masuk

代码简化

使用-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!

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan