在 ci 過程中,經(jīng)常有一些可以通過靜態(tài)分析或者白盒檢測去避免一些問題以及規(guī)范代碼格式!使用Go語言一般是使用 golangci-line 作為代碼檢測工具!
創(chuàng)新互聯(lián)建站是一家專注于網(wǎng)站建設(shè)、成都網(wǎng)站建設(shè)與策劃設(shè)計(jì),本溪網(wǎng)站建設(shè)哪家好?創(chuàng)新互聯(lián)建站做網(wǎng)站,專注于網(wǎng)站建設(shè)十年,網(wǎng)設(shè)計(jì)領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:本溪等地區(qū)。本溪做網(wǎng)站價(jià)格咨詢:028-86922220
參考官網(wǎng):
安裝: curl-sSfL | sh -s -- -b $(go env GOPATH)/bin v1.43.0
版本信息: golangci-lint--version
目前我司是自己二開的 golangci-line,所以這里使用的開源版本,其實(shí)大同小異,就是開發(fā)了一些插件!
這個(gè)就是一個(gè)工具,集成了各類自動(dòng)檢測代碼的工具,所以不需要本地安裝太多的工具,只需要這個(gè)工具即可!
由于它需要一個(gè)go的項(xiàng)目,這里以我自己的項(xiàng)目去介紹, 項(xiàng)目地址:,如果有同學(xué)想自己嘗試下可以直接下載我這個(gè)項(xiàng)目!項(xiàng)目也比較規(guī)范!
其實(shí)執(zhí)行 golangci-lint run-h 就可以獲取以下幫助
例如我經(jīng)常使用的: 我日常就是開啟format功能!
1、默認(rèn)使用的插件
2、默認(rèn)沒用的
3、presets 分類:
具體可以參考我的:
主要是做一些 無用代碼檢測,簡化代碼,格式化代碼!然后執(zhí)行 golangci-lint run --fix 即可
本文介紹一些Go語言的基礎(chǔ)語法。
先來看一個(gè)簡單的go語言代碼:
go語言的注釋方法:
代碼執(zhí)行結(jié)果:
下面來進(jìn)一步介紹go的基礎(chǔ)語法。
go語言中格式化輸出可以使用 fmt 和 log 這兩個(gè)標(biāo)準(zhǔn)庫,
常用方法:
示例代碼:
執(zhí)行結(jié)果:
更多格式化方法可以訪問中的fmt包。
log包實(shí)現(xiàn)了簡單的日志服務(wù),也提供了一些格式化輸出的方法。
執(zhí)行結(jié)果:
下面來介紹一下go的數(shù)據(jù)類型
下表列出了go語言的數(shù)據(jù)類型:
int、float、bool、string、數(shù)組和struct屬于值類型,這些類型的變量直接指向存在內(nèi)存中的值;slice、map、chan、pointer等是引用類型,存儲(chǔ)的是一個(gè)地址,這個(gè)地址存儲(chǔ)最終的值。
常量是在程序編譯時(shí)就確定下來的值,程序運(yùn)行時(shí)無法改變。
執(zhí)行結(jié)果:
執(zhí)行結(jié)果:
Go 語言的運(yùn)算符主要包括算術(shù)運(yùn)算符、關(guān)系運(yùn)算符、邏輯運(yùn)算符、位運(yùn)算符、賦值運(yùn)算符以及指針相關(guān)運(yùn)算符。
算術(shù)運(yùn)算符:
關(guān)系運(yùn)算符:
邏輯運(yùn)算符:
位運(yùn)算符:
賦值運(yùn)算符:
指針相關(guān)運(yùn)算符:
下面介紹一下go語言中的if語句和switch語句。另外還有一種控制語句叫select語句,通常與通道聯(lián)用,這里不做介紹。
if語法格式如下:
if ... else :
else if:
示例代碼:
語法格式:
另外,添加 fallthrough 會(huì)強(qiáng)制執(zhí)行后面的 case 語句,不管下一條case語句是否為true。
示例代碼:
執(zhí)行結(jié)果:
下面介紹幾種循環(huán)語句:
執(zhí)行結(jié)果:
執(zhí)行結(jié)果:
也可以通過標(biāo)記退出循環(huán):
--THE END--
先看一下目錄結(jié)構(gòu),注意這里的src名稱是必須的,go在設(shè)置了GOPATH后,默認(rèn)會(huì)添加src去尋找package,暫未查詢是否有方法不按照src查詢
根據(jù)上面的描述,Go語言中通過包中函數(shù)的名稱來區(qū)分公共函數(shù)和私有函數(shù),我們?cè)趍ain函數(shù)中是無法調(diào)用myPrivateFunc的
此時(shí)如果執(zhí)行通過go run方式執(zhí)行,會(huì)看到如下的提示信息,這與大部分語言對(duì)于包管理方式相關(guān),所以我們通過兩種不同的方法來讓代碼執(zhí)行起來
返回如下,這里面對(duì)我們后續(xù)執(zhí)行有影響的兩個(gè)參數(shù)GO111MODULE和GOPATH
如果要使用gopath模式引用包,則需要關(guān)閉mod模式
設(shè)置GOPATH為當(dāng)前路徑,即main.go所在的路徑
此時(shí)再查看go env時(shí),GOPATH已經(jīng)發(fā)生改變
我們?cè)俅螄L試執(zhí)行代碼
可以看到public函數(shù)被調(diào)用