真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

go語言有縮進(jìn)嗎

這篇文章主要介紹“go語言有縮進(jìn)嗎”的相關(guān)知識,小編通過實(shí)際案例向大家展示操作過程,操作方法簡單快捷,實(shí)用性強(qiáng),希望這篇“go語言有縮進(jìn)嗎”文章能幫助大家解決問題。

公司主營業(yè)務(wù):網(wǎng)站設(shè)計(jì)制作、網(wǎng)站設(shè)計(jì)、移動網(wǎng)站開發(fā)等業(yè)務(wù)。幫助企業(yè)客戶真正實(shí)現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競爭能力。創(chuàng)新互聯(lián)是一支青春激揚(yáng)、勤奮敬業(yè)、活力青春激揚(yáng)、勤奮敬業(yè)、活力澎湃、和諧高效的團(tuán)隊(duì)。公司秉承以“開放、自由、嚴(yán)謹(jǐn)、自律”為核心的企業(yè)文化,感謝他們對我們的高要求,感謝他們從不同領(lǐng)域給我們帶來的挑戰(zhàn),讓我們激情的團(tuán)隊(duì)有機(jī)會用頭腦與智慧不斷的給客戶帶來驚喜。創(chuàng)新互聯(lián)推出義縣免費(fèi)做網(wǎng)站回饋大家。

go語言有縮進(jìn)。在go語言中,縮進(jìn)直接使用gofmt工具格式化即可(gofmt使用tab進(jìn)行縮進(jìn));gofmt工具會以標(biāo)準(zhǔn)樣式的縮進(jìn)和垂直對齊方式對源代碼進(jìn)行格式化,甚至必要情況下注釋也會重新格式化。

go語言的代碼風(fēng)格

(1)縮進(jìn)和折行

縮進(jìn)直接使用gofmt工具格式化即可(gofmt是使用tab縮進(jìn)的)。gofmt該工具會以標(biāo)準(zhǔn)樣式的縮進(jìn)和垂直對齊方式對源代碼進(jìn)行格式化,甚至必要情況下注釋也會重新格式化。

折行方面,一行最長不超過120個(gè)字符,超過的請使用換行展示,盡量保持格式優(yōu)雅

我們使用GoLand開發(fā)工具,直接使用快捷鍵:Ctrl+Alt+L即可。

(2)語句的結(jié)尾

Go語言中是不需要類似于Java需要分號結(jié)尾,默認(rèn)一行就是一條數(shù)據(jù)。

如果你打算將多個(gè)語句寫在同一行,它們則必須使用。

(3)括號和空格

括號和空格方面,也可以直接使用gofmt 工具格式化(go會強(qiáng)制左大括號不換行,換行會報(bào)語法錯(cuò)誤),所有的運(yùn)算符和操作數(shù)之間要留空格。

//正確的方式
if a > 0 {

}
//錯(cuò)誤的方式
if a>0  // a,>,0之間應(yīng)該使用空格
{       //左大括號不可以換行,會報(bào)語法錯(cuò)誤
	
}

(4)import規(guī)范

import在多行的情況下,goimports會自動幫你格式化,如果你在一個(gè)文件里面引入了一個(gè)package,建議采用如下格式:

import {
	"fmt"
}

如果你的包引入了三種類型的包,標(biāo)準(zhǔn)庫包,程序內(nèi)部包,第三方包,建議采用如下方式進(jìn)行組織你的包

inport{
	"encoding/json"
	"strings"
	
	"myproject/models"
	"myproject/controller"
	
	"github.com/astaxie/beego"
}

有順序的引入包,不同的類型采用空格分隔,第一種實(shí)際準(zhǔn)庫,第二是項(xiàng)目包,第三是第三方包?!鞠嚓P(guān)推薦:Go視頻教程】

在項(xiàng)目中不要使用相對路徑引入包

(5)錯(cuò)誤處理

錯(cuò)誤處理的原則就是不能丟棄任何有返回err的調(diào)用,不要使用_丟棄,必須全部處理。接收到錯(cuò)誤,要么返回err,或者使用log記錄下來

  • 盡早return:一旦有錯(cuò)誤發(fā)生,馬上返回

  • 盡量不使用panic,除非你知道你在做什么

  • 錯(cuò)誤描述如果是英文必須為小寫,不需要標(biāo)點(diǎn)結(jié)尾

  • 采用獨(dú)立的錯(cuò)誤流進(jìn)行處理

// 錯(cuò)誤寫法
if err != nil {
	// error handing
} else {
	//normal code
}

// 正確寫法
if err != nil {
	// error handing
	return // or continue, etc.
}
//  normal code

(6)測試

單元測試文件命名規(guī)范為 example_test.go

測試用例的函數(shù)名稱都必須以Test

每個(gè)重要的函數(shù)都要首先編寫測試用例,測試用例和正規(guī)代碼一起提交方便進(jìn)行回歸測試

go語言的gofmt命令

gofmt是一個(gè)單獨(dú)的命令,用來格式化Go的源代碼。它用制表符(tab)進(jìn)行縮進(jìn),空格進(jìn)行對齊。對齊假定編輯器使用的是等寬字體。如果沒有顯式指定路徑,它將處理標(biāo)準(zhǔn)輸入;給定一個(gè)文件,它將處理該文件;給定一個(gè)文件夾,他將遞歸處理該文件夾下的所有.go文件(隱藏文件除外)。默認(rèn)情況下,gofmt會將重新格式化好的代碼打印至標(biāo)準(zhǔn)輸出(而不是直接更新源文件)。

用法如下:

gofmt [flags] [path ...]

flags如下:

  • -d 重新格式化后的代碼不再打印至標(biāo)準(zhǔn)輸出。如果文件代碼格式與gofmt不一致,打印區(qū)別至標(biāo)準(zhǔn)輸出(該標(biāo)識類似git的diff命令)。

  • -e 打印所有的錯(cuò)誤(包括假的)。

  • -l 重新格式化后的代碼不再打印至標(biāo)準(zhǔn)輸出。如果文件代碼格式與gofmt不一致,打印該文件名至標(biāo)準(zhǔn)輸出。

  • -r rule 重新格式化源文件前應(yīng)用指定的重寫規(guī)則。

  • -s 在應(yīng)用規(guī)則后(如果有的話),嘗試簡化代碼。

  • -w 重新格式化后的代碼不再打印至標(biāo)準(zhǔn)輸出。如果文件代碼格式與gofmt不一致,使用gofmt的版本進(jìn)行重寫。重寫過程中如果出現(xiàn)錯(cuò)誤,原始文件將使用自動備份進(jìn)行還原。

調(diào)試支持:

  • -cpuprofile filename 將cpuprofile寫入到指定的文件。

注意:-r標(biāo)識指定的重寫規(guī)則必須是一個(gè)字符串形式:pattern -> replacement

pattern和replacement部分必須是一個(gè)有效的Go表達(dá)式。在pattern中,單字符小寫標(biāo)識符用作匹配任意子表達(dá)式的通配符,這些表達(dá)式將替換為replacement中相同的標(biāo)識符。

當(dāng)gofmt從標(biāo)準(zhǔn)輸入讀取時(shí),即接受一個(gè)完整的Go程序,也可以是一個(gè)程序片段。程序片段必須是語法上有效的聲明列表,語句列表或表達(dá)式。格式化這種片段時(shí),gofmt會保留前導(dǎo)縮進(jìn)和前后的空格,以便Go程序的各個(gè)部分可以通過gofmt來格式化。

示例

假設(shè)源文件(hello.go)內(nèi)容如下:

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)]// 本行可以優(yōu)化切片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)] // 本行可以優(yōu)化切片s上界

    fmt.Println(s)
    fmt.Println(sub)
}

注意看帶注釋的行發(fā)生的變化。

3.當(dāng)前目錄下,從顯式切片上界轉(zhuǎn)換為隱式切片上界:

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

源文件第22行將變成如下:

    sub := s[start:] // 本行可以優(yōu)化切片上限

代碼簡化

使用-s調(diào)用gofmt時(shí),將盡可能進(jìn)行以下轉(zhuǎn)換:

以下數(shù)組,切片或映射的復(fù)合字面量形式:

    []T{T{}, T{}}

將被簡化為:

    []T{{}, {}}

以下切片表達(dá)式形式:

    s[a:len(s)]

將被簡化為:

    s[a:]

以下range形式:

    for x, _ = range v {...}

將被簡化為:

    for x = range v {...}

以下range形式:

    for _ = range v {...}

將被簡化為:

    for range v {...}

注意:這些改變可能與早期版本的Go不兼容。另外,官方文檔中指出:

  • -r標(biāo)識性能有點(diǎn)慢;

  • -w如果失敗,還原后的源文件可能會丟失某些文件屬性。

關(guān)于“go語言有縮進(jìn)嗎”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識,可以關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,小編每天都會為大家更新不同的知識點(diǎn)。


新聞標(biāo)題:go語言有縮進(jìn)嗎
轉(zhuǎn)載來源:http://weahome.cn/article/jegpgg.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部