學習go語言總結(jié),深入理解go語言

Go語言和其他語言的不同之基本語法

Go語言作為出現(xiàn)比較晚的一門編程語言,在其原生支持高并發(fā)、云原生等領域的優(yōu)秀表現(xiàn),像目前比較流行的容器編排技術Kubernetes、容器技術Docker都是用Go語言寫的,像Java等其他面向?qū)ο蟮恼Z言,雖然也能做云原生相關的開發(fā),但是支持的程度遠沒有Go語言高,憑借其語言特性和簡單的編程方式,彌補了其他編程語言一定程度上的不足,一度成為一個熱門的編程語言。

創(chuàng)新互聯(lián)建站是一家集網(wǎng)站建設,陜州企業(yè)網(wǎng)站建設,陜州品牌網(wǎng)站建設,網(wǎng)站定制,陜州網(wǎng)站建設報價,網(wǎng)絡營銷,網(wǎng)絡優(yōu)化,陜州網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強企業(yè)競爭力??沙浞譂M足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時我們時刻保持專業(yè)、時尚、前沿,時刻以成就客戶成長自我,堅持不斷學習、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實用型網(wǎng)站。

最近在學習Go語言,我之前使用過C#、Java等面向?qū)ο缶幊痰恼Z言,發(fā)現(xiàn)其中有很多的編程方式和其他語言有區(qū)別的地方,好記性不如爛筆頭,總結(jié)一下,和其他語言做個對比。這里只總結(jié)差異的地方,具體的語法不做詳細的介紹。

種一棵樹最好的時間是十年前,其次是現(xiàn)在。

3)變量初始化時候可以和其他語言一樣直接在變量后面加等號,等號后面為要初始化的值,也可以使用變量名:=變量值的簡單方式

3)變量賦值 Go語言的變量賦值和多數(shù)語言一致,但是Go語言提供了多重賦值的功能,比如下面這個交換i、j變量的語句:

在不支持多重賦值的語言中,交換兩個變量的值需要引入一個中間變量:

4)匿名變量

在使用其他語言時,有時候要獲取一個值,卻因為該函數(shù)返回多個值而不得不定義很多沒有的變量,Go語言可以借助多重返回值和匿名變量來避免這種寫法,使代碼看起來更優(yōu)雅。

假如GetName()函數(shù)返回3個值,分別是firstName,lastName和nickName

若指向獲得nickName,則函數(shù)調(diào)用可以這樣寫

這種寫法可以讓代碼更清晰,從而大幅降低溝通的復雜度和維護的難度。

1)基本常量

常量使用關鍵字const 定義,可以限定常量類型,但不是必須的,如果沒有定義常量的類型,是無類型常量

2)預定義常量

Go語言預定義了這些常量 true、false和iota

iota比較特殊,可以被任務是一個可被編譯器修改的常量,在每個const關鍵字出現(xiàn)時被重置為0,然后在下一個const出現(xiàn)之前每出現(xiàn)一個iota,其所代表的數(shù)字會自動加1.

3)枚舉

1)int 和int32在Go語言中被認為是兩種不同類型的類型

2)Go語言定義了兩個浮點型float32和float64,其中前者等價于C語言的float類型,后者等價于C語言的double類型

3)go語言支持復數(shù)類型

復數(shù)實際上是由兩個實數(shù)(在計算機中使用浮點數(shù)表示)構成,一個表示實部(real)、一個表示虛部(imag)。也就是數(shù)學上的那個復數(shù)

復數(shù)的表示

實部與虛部

對于一個復數(shù)z=complex(x,y),就可以通過Go語言內(nèi)置函數(shù)real(z)獲得該復數(shù)的實部,也就是x,通過imag(z)獲得該復數(shù)的虛部,也就是y

4)數(shù)組(值類型,長度在定義后無法再次修改,每次傳遞都將產(chǎn)生一個副本。)

5)數(shù)組切片(slice)

數(shù)組切片(slice)彌補了數(shù)組的不足,其數(shù)據(jù)結(jié)構可以抽象為以下三個變量:

6)Map 在go語言中Map不需要引入任何庫,使用很方便

Go循環(huán)語句只支持for關鍵字,不支持while和do-while

goto語句的語義非常簡單,就是跳轉(zhuǎn)到本函數(shù)內(nèi)的某個標簽

今天就介紹到這里,以后我會在總結(jié)Go語言在其他方面比如并發(fā)編程、面向?qū)ο?、網(wǎng)絡編程等方面的不同及使用方法。希望對大家有所幫助。

如何學習GO語言?

Go語言也稱 Golang,兼具效率、性能、安全、健壯等特性。這套Go語言教程(Golang教程)通俗易懂,深入淺出,既適合沒有基礎的讀者快速入門,也適合工作多年的程序員查閱知識點。

Go 語言

這套教程在講解一些知識點時,將 Go 語言和其他多種語言進行對比,讓掌握其它編程語言的讀者能迅速理解 Go 語言的特性。Go語言從底層原生支持并發(fā),無須第三方庫、開發(fā)者的編程技巧和開發(fā)經(jīng)驗就可以輕松搞定。

Go語言(或 Golang)起源于 2007 年,并在 2009 年正式對外發(fā)布。Go 是非常年輕的一門語言,它的主要目標是“兼具 Python 等動態(tài)語言的開發(fā)速度和 C/C++ 等編譯型語言的性能與安全性”。

Go語言是編程語言設計的又一次嘗試,是對類C語言的重大改進,它不但能讓你訪問底層操作系統(tǒng),還提供了強大的網(wǎng)絡編程和并發(fā)編程支持。Go語言的用途眾多,可以進行網(wǎng)絡編程、系統(tǒng)編程、并發(fā)編程、分布式編程。

Go語言的推出,旨在不損失應用程序性能的情況下降低代碼的復雜性,具有“部署簡單、并發(fā)性好、語言設計良好、執(zhí)行性能好”等優(yōu)勢,目前國內(nèi)諸多 IT 公司均已采用Go語言開發(fā)項目。Go語言有時候被描述為“C 類似語言”,或者是“21 世紀的C語言”。Go 從C語言繼承了相似的表達式語法、控制流結(jié)構、基礎數(shù)據(jù)類型、調(diào)用參數(shù)傳值、指針等很多思想,還有C語言一直所看中的編譯后機器碼的運行效率以及和現(xiàn)有操作系統(tǒng)的無縫適配。

因為Go語言沒有類和繼承的概念,所以它和 Java 或 C++ 看起來并不相同。但是它通過接口(interface)的概念來實現(xiàn)多態(tài)性。Go語言有一個清晰易懂的輕量級類型系統(tǒng),在類型之間也沒有層級之說。因此可以說Go語言是一門混合型的語言。

此外,很多重要的開源項目都是使用Go語言開發(fā)的,其中包括 Docker、Go-Ethereum、Thrraform 和 Kubernetes。Go 是編譯型語言,Go 使用編譯器來編譯代碼。編譯器將源代碼編譯成二進制(或字節(jié)碼)格式;在編譯代碼時,編譯器檢查錯誤、優(yōu)化性能并輸出可在不同平臺上運行的二進制文件。要創(chuàng)建并運行 Go 程序,程序員必須執(zhí)行如下步驟。

使用文本編輯器創(chuàng)建 Go 程序;

保存文件;編譯程序;運行編譯得到的可執(zhí)行文件。

這不同于 Python、Ruby 和 JavaScript 等語言,它們不包含編譯步驟。Go 自帶了編譯器,因此無須單獨安裝編譯器。

鏈喬教育在線旗下學碩創(chuàng)新區(qū)塊鏈技術工作站是中國教育部學校規(guī)劃建設發(fā)展中心開展的“智慧學習工場2020-學碩創(chuàng)新工作站 ”唯一獲準的“區(qū)塊鏈技術專業(yè)”試點工作站。專業(yè)站立足為學生提供多樣化成長路徑,推進專業(yè)學位研究生產(chǎn)學研結(jié)合培養(yǎng)模式改革,構建應用型、復合型人才培養(yǎng)體系。

GO語言學習系列八——GO函數(shù)(func)的聲明與使用

GO是編譯性語言,所以函數(shù)的順序是無關緊要的,為了方便閱讀,建議入口函數(shù) main 寫在最前面,其余函數(shù)按照功能需要進行排列

GO的函數(shù) 不支持嵌套,重載和默認參數(shù)

GO的函數(shù) 支持 無需聲明變量,可變長度,多返回值,匿名,閉包等

GO的函數(shù)用 func 來聲明,且左大括號 { 不能另起一行

一個簡單的示例:

輸出為:

參數(shù):可以傳0個或多個值來供自己用

返回:通過用 return 來進行返回

輸出為:

上面就是一個典型的多參數(shù)傳遞與多返回值

對例子的說明:

按值傳遞:是對某個變量進行復制,不能更改原變量的值

引用傳遞:相當于按指針傳遞,可以同時改變原來的值,并且消耗的內(nèi)存會更少,只有4或8個字節(jié)的消耗

在上例中,返回值 (d int, e int, f int) { 是進行了命名,如果不想命名可以寫成 (int,int,int){ ,返回的結(jié)果都是一樣的,但要注意:

當返回了多個值,我們某些變量不想要,或?qū)嶋H用不到,我們可以使用 _ 來補位,例如上例的返回我們可以寫成 d,_,f := test(a,b,c) ,我們不想要中間的返回值,可以以這種形式來舍棄掉

在參數(shù)后面以 變量 ... type 這種形式的,我們就要以判斷出這是一個可變長度的參數(shù)

輸出為:

在上例中, strs ...string 中, strs 的實際值是b,c,d,e,這就是一個最簡單的傳遞可變長度的參數(shù)的例子,更多一些演變的形式,都非常類似

在GO中 defer 關鍵字非常重要,相當于面相對像中的析構函數(shù),也就是在某個函數(shù)執(zhí)行完成后,GO會自動這個;

如果在多層循環(huán)中函數(shù)里,都定義了 defer ,那么它的執(zhí)行順序是先進后出;

當某個函數(shù)出現(xiàn)嚴重錯誤時, defer 也會被調(diào)用

輸出為

這是一個最簡單的測試了,當然還有更復雜的調(diào)用,比如調(diào)試程序時,判斷是哪個函數(shù)出了問題,完全可以根據(jù) defer 打印出來的內(nèi)容來進行判斷,非??焖?,這種留給你們?nèi)崿F(xiàn)

一個函數(shù)在函數(shù)體內(nèi)自己調(diào)用自己我們稱之為遞歸函數(shù),在做遞歸調(diào)用時,經(jīng)常會將內(nèi)存給占滿,這是非常要注意的,常用的比如,快速排序就是用的遞歸調(diào)用

本篇重點介紹了GO函數(shù)(func)的聲明與使用,下一篇將介紹GO的結(jié)構 struct

「測試開發(fā)全棧化-Go」(1) Go語言基本了解

作為一個測試,作為一個測試開發(fā), 全?;?管理 是我們未來的發(fā)展方向。已經(jīng)掌握了Java、Python、HTML的你,是不是也想了解下最近異?;鸨腉o語言呢?來吧,讓我們一起了解下。

Go 是一個開源的編程語言 ,它能讓構造簡單、可靠且高效的軟件變得容易。

Go是從2007年末由Robert Griesemer, Rob Pike, Ken Thompson主持開發(fā),后來還加入了Ian Lance Taylor, Russ Cox等人,并最終于2009年11月開源,在2012年早些時候發(fā)布了Go 1穩(wěn)定版本?,F(xiàn)在Go的開發(fā)已經(jīng)是完全開放的,并且擁有一個活躍的社區(qū)。這三個人都是計算機界的大神,有的參與了C語言的編寫,有的還是數(shù)學大神,有的還獲得了計算機最高榮譽-圖靈獎。

接下來說說 Go語言的特色 :

簡潔、快速、安全

并行、有趣、開源

內(nèi)存管理、數(shù)組安全、編譯迅速

Go語言的用途 :

Go 語言被設計成一門應用于搭載 Web 服務器,存儲集群或類似用途的巨型中央服務器的系統(tǒng)編程語言。

對于高性能分布式系統(tǒng)領域而言,Go 語言無疑比大多數(shù)其它語言有著更高的開發(fā)效率。它提供了海量并行的支持,這對于 游戲 服務端的開發(fā)而言是再好不過了。

Go語言的環(huán)境安裝:

建議直接打開 官方地址因為墻的原因打不開

因為我用的是windows系統(tǒng),這里主要講下Windows系統(tǒng)上使用Go語言來編程。

Windows 下可以使用 .msi 后綴(在下載列表中可以找到該文件,如go1.17.2.windows-amd64.msi)的安裝包來安裝。

默認情況下 .msi 文件會安裝在 c:Go 目錄下。你可以將 c:Gobin 目錄添加到 Path 環(huán)境變量中。添加后你需要重啟命令窗口才能生效。個人建議還是安裝到 Program Files文件夾中。

使用什么開發(fā)工具來對Go語言進行編寫:

個人建議用VS code, 也可以用Sublime Text來編輯。如果你之前看了我講的HTML語言的學習,肯定已經(jīng)下載了VS code. 那么這時你需要在VS code中下載Go語言的擴展插件。

這里有一個巨大的坑,就是在下載Go的插件和依賴包時,會提示一些包沒有。主要是因為下載的依賴包部分被墻了,只能想別的辦法去下載。

建議參考網(wǎng)頁:

解決vscode中golang插件安裝失敗方法

在學習go的過程中,使用的是vscode,但是一直提示安裝相關插件失敗,然后上網(wǎng)查方法,基本上是叫你建立golang.org目錄什么的,結(jié)果全是錯的,而且都是抄襲,很煩。無意之中看到一位博主分享的方法,他也是飽受上述的垃圾博文困擾,然后找到了解決方法,這里向他致敬,秉著讓更多人看到正確解決方法的心,我寫下正確的解決方法,希望對你有所幫助,也可以點開原博主鏈接參考:

Go有一個全球模塊代理,設置代理再去安裝golang的插件,就可以安裝成功了。步驟有,首先Windows用戶打開Powershell,一個藍色的界面,注意不是cmd!不知道的直接打開window下面的搜索,然后輸入powershell,搜索出來就可以了。

$env:GO111MODULE=“on”

$env:GOPROXY=“”

go env -w GOPROXY=

go env -w GOPRIVATE=*.corp.example.com

然后我們打開VsCode界面,下面會提示安裝插件,我們選擇Install ALL,就會安裝成功

當你在運行Go語言程序時,提示所有的插件包都已經(jīng)安裝成功了時,就可以正常使用了,要不然一堆報錯會讓你非常心煩。

好了,今天先到這里,晚安、下班~

go語言到底有什么好處

1. 部署簡單

Go

編譯生成的是一個靜態(tài)可執(zhí)行文件,除了glibc外沒有其他外部依賴。這讓部署變得異常方便:目標機器上只需要一個基礎的系統(tǒng)和必要的管理、監(jiān)控工具,完全不需要操心應用所需的各種包、庫的依賴關系,大大減輕了維護的負擔。

2. 并發(fā)性好

Goroutine和channel使得編寫高并發(fā)的服務端軟件變得相當容易,很多情況下完全不需要考慮鎖機制以及由此帶來的各種問題。單個Go應用也能有效的利用多個CPU核,并行執(zhí)行的性能好。

3. 良好的語言設計

從學術的角度講Go語言其實非常平庸,不支持許多高級的語言特性;但從工程的角度講,Go的設計是非常優(yōu)秀的:規(guī)范足夠簡單靈活,有其他語言基礎的程序員都能迅速上手。更重要的是

Go 自帶完善的工具鏈,大大提高了團隊協(xié)作的一致性。

4. 執(zhí)行性能好

雖然不如 C 和 Java,但相比于其他編程語言,其執(zhí)行性能還是很好的,適合編寫一些瓶頸業(yè)務,內(nèi)存占用也非常省。

分享標題:學習go語言總結(jié),深入理解go語言
標題URL:http://muchs.cn/article16/hcpgdg.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站策劃、Google、微信公眾號網(wǎng)站改版、動態(tài)網(wǎng)站、做網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站建設