您好,登錄后才能下訂單哦!
這篇文章主要介紹“go語言有縮進嗎”的相關知識,小編通過實際案例向大家展示操作過程,操作方法簡單快捷,實用性強,希望這篇“go語言有縮進嗎”文章能幫助大家解決問題。
go語言有縮進。在go語言中,縮進直接使用gofmt工具格式化即可(gofmt使用tab進行縮進);gofmt工具會以標準樣式的縮進和垂直對齊方式對源代碼進行格式化,甚至必要情況下注釋也會重新格式化。
go語言的代碼風格
(1)縮進和折行
縮進直接使用gofmt工具格式化即可(gofmt是使用tab縮進的)。gofmt該工具會以標準樣式的縮進和垂直對齊方式對源代碼進行格式化,甚至必要情況下注釋也會重新格式化。
折行方面,一行最長不超過120個字符,超過的請使用換行展示,盡量保持格式優雅
我們使用GoLand開發工具,直接使用快捷鍵:Ctrl+Alt+L即可。
(2)語句的結尾
Go語言中是不需要類似于Java需要分號結尾,默認一行就是一條數據。
如果你打算將多個語句寫在同一行,它們則必須使用。
(3)括號和空格
括號和空格方面,也可以直接使用gofmt 工具格式化(go會強制左大括號不換行,換行會報語法錯誤),所有的運算符和操作數之間要留空格。
//正確的方式
if a > 0 {
}
//錯誤的方式
if a>0 // a,>,0之間應該使用空格
{ //左大括號不可以換行,會報語法錯誤
}
(4)import規范
import在多行的情況下,goimports會自動幫你格式化,如果你在一個文件里面引入了一個package,建議采用如下格式:
import {
"fmt"
}
如果你的包引入了三種類型的包,標準庫包,程序內部包,第三方包,建議采用如下方式進行組織你的包
inport{
"encoding/json"
"strings"
"myproject/models"
"myproject/controller"
"github.com/astaxie/beego"
}
有順序的引入包,不同的類型采用空格分隔,第一種實際準庫,第二是項目包,第三是第三方包。【相關推薦:Go視頻教程】
在項目中不要使用相對路徑引入包
(5)錯誤處理
錯誤處理的原則就是不能丟棄任何有返回err的調用,不要使用_丟棄,必須全部處理。接收到錯誤,要么返回err,或者使用log記錄下來
盡早return:一旦有錯誤發生,馬上返回
盡量不使用panic,除非你知道你在做什么
錯誤描述如果是英文必須為小寫,不需要標點結尾
采用獨立的錯誤流進行處理
// 錯誤寫法
if err != nil {
// error handing
} else {
//normal code
}
// 正確寫法
if err != nil {
// error handing
return // or continue, etc.
}
// normal code
(6)測試
單元測試文件命名規范為 example_test.go
測試用例的函數名稱都必須以Test
每個重要的函數都要首先編寫測試用例,測試用例和正規代碼一起提交方便進行回歸測試
go語言的gofmt命令
gofmt是一個單獨的命令,用來格式化Go的源代碼。它用制表符(tab)進行縮進,空格進行對齊。對齊假定編輯器使用的是等寬字體。如果沒有顯式指定路徑,它將處理標準輸入;給定一個文件,它將處理該文件;給定一個文件夾,他將遞歸處理該文件夾下的所有.go文件(隱藏文件除外)。默認情況下,gofmt會將重新格式化好的代碼打印至標準輸出(而不是直接更新源文件)。
用法如下:
gofmt [flags] [path ...]
flags如下:
-d 重新格式化后的代碼不再打印至標準輸出。如果文件代碼格式與gofmt不一致,打印區別至標準輸出(該標識類似git的diff命令)。
-e 打印所有的錯誤(包括假的)。
-l 重新格式化后的代碼不再打印至標準輸出。如果文件代碼格式與gofmt不一致,打印該文件名至標準輸出。
-r rule 重新格式化源文件前應用指定的重寫規則。
-s 在應用規則后(如果有的話),嘗試簡化代碼。
-w 重新格式化后的代碼不再打印至標準輸出。如果文件代碼格式與gofmt不一致,使用gofmt的版本進行重寫。重寫過程中如果出現錯誤,原始文件將使用自動備份進行還原。
調試支持:
-cpuprofile filename 將cpuprofile寫入到指定的文件。
注意:-r標識指定的重寫規則必須是一個字符串形式:pattern -> replacement
pattern和replacement部分必須是一個有效的Go表達式。在pattern中,單字符小寫標識符用作匹配任意子表達式的通配符,這些表達式將替換為replacement中相同的標識符。
當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{}}將被簡化為:
[]T{{}, {}}以下切片表達式形式:
s[a:len(s)]將被簡化為:
s[a:]以下range形式:
for x, _ = range v {...}將被簡化為:
for x = range v {...}以下range形式:
for _ = range v {...}將被簡化為:
for range v {...}
注意:這些改變可能與早期版本的Go不兼容。另外,官方文檔中指出:
-r標識性能有點慢;
-w如果失敗,還原后的源文件可能會丟失某些文件屬性。
關于“go語言有縮進嗎”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識,可以關注億速云行業資訊頻道,小編每天都會為大家更新不同的知識點。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。