這個(gè)文件通過(guò)路徑標(biāo)識(shí) rsc.io/hello 定義了一個(gè)模塊,它本身還依賴于兩個(gè)其他模塊:golang.org/x/text 和 rsc.io/quote ,這個(gè)模塊自身編譯的時(shí)候使用的是 go.mod 文件中指定的依賴列表的版本。對(duì)于更上一層的編譯,其他導(dǎo)入這個(gè)模塊的地方將使用它較新的版本編譯。
創(chuàng)新互聯(lián)公司專注于企業(yè)網(wǎng)絡(luò)營(yíng)銷推廣、網(wǎng)站重做改版、正鑲白網(wǎng)站定制設(shè)計(jì)、自適應(yīng)品牌網(wǎng)站建設(shè)、H5建站、商城網(wǎng)站制作、集團(tuán)公司官網(wǎng)建設(shè)、外貿(mào)營(yíng)銷網(wǎng)站建設(shè)、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁(yè)設(shè)計(jì)等建站業(yè)務(wù),價(jià)格優(yōu)惠性價(jià)比高,為正鑲白等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。
包發(fā)布者最好使用語(yǔ)義化的 tag 發(fā)布版本,vgo 也鼓勵(lì)通過(guò)打tag的版本號(hào)方式,而不是任意的提交版本。
在Client的字段中,有一個(gè) CheckRedirect ,此字段就是用來(lái)控制重定向的函數(shù),如果沒(méi)有定義此字段的話,將會(huì)使用默認(rèn)的 defaultCheckRedirect 方法。
默認(rèn)的轉(zhuǎn)發(fā)策略是最多轉(zhuǎn)發(fā)10次。
在轉(zhuǎn)發(fā)的過(guò)程中,某一些包含安全信息的Header,比如 Authorization 、 WWW-Authenticate 、 Cookie 等,如果轉(zhuǎn)發(fā)是跨域的,那么這些Header不會(huì)復(fù)制到新的請(qǐng)求中。
http的重定向判斷會(huì)默認(rèn)處理以下狀態(tài)碼的請(qǐng)求:
301 (Moved Permanently)
302 (Found)
303 (See Other)
307 (Temporary Redirect)
308 (Permanent Redirect)
301、302和303請(qǐng)求將會(huì)改用Get訪問(wèn)新的請(qǐng)求,而307和308會(huì)使用原有的請(qǐng)求方式。
那么,我們?nèi)绾稳タ刂浦囟ㄏ虻拇螖?shù),甚至是禁止重定向呢?這里其實(shí)就需要我們自己去實(shí)現(xiàn)一個(gè)CheckRedirect函數(shù)了,首先我們來(lái)看看默認(rèn)的defaultCheckRedirect方法:
第一個(gè)參數(shù)req是即將轉(zhuǎn)發(fā)的request,第二個(gè)參數(shù) via是已經(jīng)請(qǐng)求過(guò)的requests??梢钥吹狡渲械倪壿嬍桥袛嗾?qǐng)求過(guò)的request數(shù)量,大于等于10的時(shí)候返回一個(gè)error,這也說(shuō)明默認(rèn)的最大重定向次數(shù)為10次,當(dāng)此函數(shù)返回error時(shí),即是重定向結(jié)束的時(shí)候。
所以如果需要設(shè)置重定向次數(shù),那么復(fù)制一份這個(gè)函數(shù),修改函數(shù)名字和其中if判斷的數(shù)字,然后在生成Client時(shí)設(shè)定到Client即可:
或者:
禁止重定向則可以把判斷數(shù)字修改為0。最好相應(yīng)地修改errors中提示的信息。
reader := bufio.NewReader(os.Stdin)
fmt.Print("Enter text: ")
text, _ := reader.ReadString('\n')
fmt.Println(text)
這是讀取控制臺(tái)輸入的數(shù)據(jù),可以開協(xié)程的方式來(lái)執(zhí)行這個(gè)代碼,協(xié)程讀取,就可以在其他地方使用
本文介紹一些Go語(yǔ)言的基礎(chǔ)語(yǔ)法。
先來(lái)看一個(gè)簡(jiǎn)單的go語(yǔ)言代碼:
go語(yǔ)言的注釋方法:
代碼執(zhí)行結(jié)果:
下面來(lái)進(jìn)一步介紹go的基礎(chǔ)語(yǔ)法。
go語(yǔ)言中格式化輸出可以使用 fmt 和 log 這兩個(gè)標(biāo)準(zhǔn)庫(kù),
常用方法:
示例代碼:
執(zhí)行結(jié)果:
更多格式化方法可以訪問(wèn)中的fmt包。
log包實(shí)現(xiàn)了簡(jiǎn)單的日志服務(wù),也提供了一些格式化輸出的方法。
執(zhí)行結(jié)果:
下面來(lái)介紹一下go的數(shù)據(jù)類型
下表列出了go語(yǔ)言的數(shù)據(jù)類型:
int、float、bool、string、數(shù)組和struct屬于值類型,這些類型的變量直接指向存在內(nèi)存中的值;slice、map、chan、pointer等是引用類型,存儲(chǔ)的是一個(gè)地址,這個(gè)地址存儲(chǔ)最終的值。
常量是在程序編譯時(shí)就確定下來(lái)的值,程序運(yùn)行時(shí)無(wú)法改變。
執(zhí)行結(jié)果:
執(zhí)行結(jié)果:
Go 語(yǔ)言的運(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語(yǔ)言中的if語(yǔ)句和switch語(yǔ)句。另外還有一種控制語(yǔ)句叫select語(yǔ)句,通常與通道聯(lián)用,這里不做介紹。
if語(yǔ)法格式如下:
if ... else :
else if:
示例代碼:
語(yǔ)法格式:
另外,添加 fallthrough 會(huì)強(qiáng)制執(zhí)行后面的 case 語(yǔ)句,不管下一條case語(yǔ)句是否為true。
示例代碼:
執(zhí)行結(jié)果:
下面介紹幾種循環(huán)語(yǔ)句:
執(zhí)行結(jié)果:
執(zhí)行結(jié)果:
也可以通過(guò)標(biāo)記退出循環(huán):
--THE END--