最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

golang特有程序結(jié)構(gòu)入門教程

 更新時間:2021年06月02日 15:47:27   作者:頂級飲水機(jī)管理員  
GO語言是一門不錯的編程語言能夠到達(dá)靜態(tài)編譯語言的安全和性能,在本文中重點(diǎn)給大家介紹goland特有程序結(jié)構(gòu)及引用類型別名的特征,感興趣的朋友跟隨小編一起看看吧

Go語言的由來

​ Go語言亦叫Golong語言,是由谷歌Goggle公司推出。Go語言的主要開發(fā)者有:肯.湯姆遜(Ken Thompson)、羅布.派克(Rob Pike)和羅伯特.格里澤默(Robert Griesemer)。這三個都是大神,稍介紹一下他們的貢獻(xiàn):
​ 肯.湯姆遜(Ken Thompson):圖靈獎得主,Uinx發(fā)明人,B語言作者(C語言前身),還做飛行員,后來被谷歌挖走。
​ 羅布.派克(Rob Pike):Unix團(tuán)隊(duì)和Plan 9操作系統(tǒng)計(jì)劃的成員,與Ken老爺子共事多年,并共創(chuàng)出廣泛使用的UTF-8 字元編碼。
​ 羅伯特.格里澤默(Robert Griesemer):曾協(xié)助制作Java的HotSpot編譯器,和Chrome瀏覽器的JavaScript引擎V8。

Go語言的特點(diǎn)

Go語言保證了既能到達(dá)靜態(tài)編譯語言的安全和性能,又達(dá)到了動態(tài)語言開發(fā)速度和易維護(hù)性,有人形容Go語言:Go = C + Python , 說明Go語言既有C靜態(tài)語言程序的運(yùn)行速度,又能達(dá)到Python動態(tài)語言的快速開發(fā)。

提示:本系列文章適合對Go有持續(xù)沖動的讀者

閱前須知:在程序結(jié)構(gòu)這章,更多會關(guān)注golang中特有結(jié)構(gòu),與其他語言如C、python中相似結(jié)構(gòu)(命名、聲明、賦值、作用域等)不再贅述。

一、golang類型別名

在go1.9中引入類型別名的特性,其中兩個內(nèi)置類型byte、 runeuint8int32的別名。類型別名即字面意思換個名字,兩者是相同類型。

類型聲明語句一般出現(xiàn)在包一級,因此如果新創(chuàng)建的類型名字的首字符大寫,則在包外部也可以使用。

解決問題:大規(guī)模重構(gòu)期間啟用漸進(jìn)式代碼修復(fù),特別是將類型從一個包移動到另一個包,以便引用舊名稱的代碼與引用新名稱的代碼互操作。類型別名對于允許使用單個頂級導(dǎo)出 API 將大型包拆分為多個實(shí)現(xiàn)包,以及對現(xiàn)有包的擴(kuò)展版本進(jìn)行試驗(yàn)也可能很有用。

定義方法:

type T1 = T2

提案地址:18130-type-alias

二、變量初始化

1.如果初始化表達(dá)式被省略,那么將用零值初始化該變量,即如下:

int -->0

bool -->false

string-->""

接口類型:slice、指針、map、chan、函數(shù) -->nil

數(shù)組或結(jié)構(gòu)體: 每個元素或字段初始為對應(yīng)類型零值

零值初始化機(jī)制可以確保每個聲明的變量總是有一個良好定義的值,這個特性可以減少許多額外工作

2.函數(shù)返回值初始化變量,比如err的獲取。在賦值語句左邊的變量和右邊最終的求到的值必須有相同的數(shù)據(jù)類型。

if err:=http.Get(addr),err{
	//
}

3.初始化表達(dá)式可以是字面量或任意的表達(dá)式。在包級別聲明的變量會在main入口函數(shù)執(zhí)行前完成初始化,局部變量將在聲明語句被執(zhí)行到的時候完成初始化

4.簡短式(:=)局部變量聲明只可用于局部變量聲明。并且簡短變量聲明語句對這些已經(jīng)聲明過的變量具有賦值行為。如下第二個聲明只聲明了out一個變量。

in, err := os.Open(infile)
// ...
out, err := os.Create(outfile)

5.函數(shù)內(nèi)生命的變量必須使用,不過可以使用下劃線_ 丟棄。

三、變量生命周期

對于在包一級聲明的變量來說,它們的生命周期和整個程序的運(yùn)行周期是一致的。

而相比之下,局部變量的生命周期則是動態(tài)的:每次從創(chuàng)建一個新變量的聲明語句開始,直到該變量不再被引用為止,然后變量的存儲空間可能被回收。

函數(shù)的參數(shù)變量和返回值變量都是局部變量。它們在函數(shù)每次被調(diào)用的時候創(chuàng)建。

四、golang package(包)與golang Module(模塊)

1. package:對一組函數(shù)或功能的封裝,即避免重復(fù)造輪子。

在1.12之后版本(引入了module)安裝后,會在用戶目錄下創(chuàng)建一個 go 文件夾作為默認(rèn)的 GOPATH,go get 會將遠(yuǎn)程的軟件包下載到GOPTH目錄下 pkg/mod 里。GOROOT為go文件和安裝目錄。$GOROOT/src為內(nèi)置標(biāo)準(zhǔn)庫。

GOPATH目錄已下載的package

$GOROOT/src目錄內(nèi)置package

在沒有使用 golang module 前導(dǎo)入他人分享的 package 需要先使用 go get 下載到本地,然后才可以通過import引用此 package

2. module:對package進(jìn)行管理,即管理應(yīng)用的依賴和package版本。

引入module后項(xiàng)目目錄不再只限制在GOPATH/src,你可以在任意文件夾下創(chuàng)建你的項(xiàng)目,再使用go mod init初始化即可。如下初始化一個module為github.com/csgo 在當(dāng)前文件夾下產(chǎn)生go.mod文件。

[root@VM-0-5-centos water_man]# ls
go.mod  water_man.go
[root@VM-0-5-centos water_man]# cat go.mod 
module github.com/csgo   //文件名稱

go 1.15   //go版本

replace github.com/csgo/rush_b => ../rush_b  //重定向package到../rush_b文件夾下

require github.com/csgo/rush_b v0.0.0-00010101000000-000000000000  //非標(biāo)準(zhǔn)庫依賴包和版本

上層目錄下自定義的package:

go module會根據(jù) go.mod 的依賴引用關(guān)系導(dǎo)入三方包。如果發(fā)現(xiàn)本地cache沒有,就會從遠(yuǎn)程拉取。即如果github.com/csgo/rush_b未重定向到本地就會使用 go get 。當(dāng) go module下載了遠(yuǎn)程包后,同時會自動更新 go.mod 。

需要注意自定義的package函數(shù)、變量如果需要被外部引用則首字母應(yīng)大寫,即包級別的名字都是以大寫字母開頭。

到此這篇關(guān)于golang特有程序結(jié)構(gòu)入門教程的文章就介紹到這了,更多相關(guān)golang程序結(jié)構(gòu)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Go 日志封裝實(shí)戰(zhàn)示例詳解

    Go 日志封裝實(shí)戰(zhàn)示例詳解

    這篇文章主要為大家介紹了Go 日志封裝實(shí)戰(zhàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-04-04
  • golang 實(shí)現(xiàn)struct、json、map互相轉(zhuǎn)化

    golang 實(shí)現(xiàn)struct、json、map互相轉(zhuǎn)化

    這篇文章主要介紹了golang 實(shí)現(xiàn)struct、json、map互相轉(zhuǎn)化,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-12-12
  • go開發(fā)中引用靜態(tài)庫.a文件的方法

    go開發(fā)中引用靜態(tài)庫.a文件的方法

    這篇文章主要介紹了go開發(fā)中引用靜態(tài)庫.a文件的方法,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-11-11
  • 使用Go語言自制簡單易用的Web框架

    使用Go語言自制簡單易用的Web框架

    這篇文章主要為大家詳細(xì)介紹了如何使用Go語言實(shí)現(xiàn)自制簡單易用的Web框架,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2024-01-01
  • Go語言接口定義與用法示例

    Go語言接口定義與用法示例

    這篇文章主要介紹了Go語言接口定義與用法,較為詳細(xì)的分析了Go語言中接口的概念、定義、用法,需要的朋友可以參考下
    2016-07-07
  • Golang學(xué)習(xí)筆記(三):控制流

    Golang學(xué)習(xí)筆記(三):控制流

    這篇文章主要介紹了Golang學(xué)習(xí)筆記(三):控制流,本文講解了IF、FOR、SWITCH、goto、break、continue等控制流語句的使用實(shí)例,需要的朋友可以參考下
    2015-05-05
  • go流程控制代碼詳解

    go流程控制代碼詳解

    這篇文章主要介紹了go流程控制,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值 ,需要的朋友可以參考下
    2019-05-05
  • 向Rust學(xué)習(xí)Go考慮簡單字符串插值特性示例解析

    向Rust學(xué)習(xí)Go考慮簡單字符串插值特性示例解析

    這篇文章主要為大家介紹了向Rust學(xué)習(xí)Go考慮簡單字符串插值特性示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-02-02
  • golang小游戲開發(fā)實(shí)戰(zhàn)之飛翔的小鳥

    golang小游戲開發(fā)實(shí)戰(zhàn)之飛翔的小鳥

    這篇文章主要給大家介紹了關(guān)于golang小游戲開發(fā)實(shí)戰(zhàn)之飛翔的小鳥的相關(guān)資料,,本文可以帶你你從零開始,一步一步的開發(fā)出這款小游戲,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-03-03
  • Golang實(shí)現(xiàn)IP地址轉(zhuǎn)整數(shù)的方法詳解

    Golang實(shí)現(xiàn)IP地址轉(zhuǎn)整數(shù)的方法詳解

    在 Go 語言中,將 IP 地址轉(zhuǎn)換為整數(shù)涉及到解析 IP 地址并處理其字節(jié)表示,本文給大家介紹了Golang實(shí)現(xiàn)IP地址轉(zhuǎn)整數(shù)的方法,文中有詳細(xì)的代碼示例供大家參考,需要的朋友可以參考下
    2024-02-02

最新評論

南汇区| 辉县市| 龙口市| 华宁县| 博乐市| 天全县| 铜鼓县| 天全县| 额尔古纳市| 竹山县| 宜兰市| 桦南县| 荣成市| 天峻县| 灵台县| 云林县| 舒城县| 商水县| 祥云县| 吉木乃县| 南雄市| 临西县| 三江| 鄂托克前旗| 天柱县| 德阳市| 钟山县| 合江县| 安徽省| 车险| 岳普湖县| 郎溪县| 昌黎县| 抚顺市| 海丰县| 卢湾区| 万山特区| 沙坪坝区| 黄冈市| 凤台县| 云安县|