banner
Pi3

Pi3

记录学习、生活和成长
github
telegram
x
zhihu
email

Go語言入門1:Go簡介

Go 語言入門基礎學習筆記之 Go 語言簡介

簡介#

image.png

Go 語言,又稱為 Golang,是由 Google 開發的一種靜態強類型、編譯型的開源編程語言。它由 Robert Griesemer、Rob Pike 和 Ken Thompson 在 2007 年設計,並於 2009 年正式對外發布。Go 語言的設計目標是提高編程效率,解決多核處理器並發編程的問題,並提高代碼的可讀性和可維護性。Go 語言以其高性能、高並發和簡潔的語法,在現代軟件開發中越來越受歡迎。

優勢#

  • 極其簡單的部署方式
    • 可直接編譯成機器碼
    • 不依賴其他庫(可執行文件較大,把全部所需的庫靜態編譯)
    • 直接運行即可部署
  • 靜態類型語言
    • 編譯的時候檢查出來隱藏的大多數問題
  • 語言層面的並發
    • 天生的基因支持並發
    • 充分利用多核
  • 強大的標準庫
    • runtime 系統調度機制
    • 高效的 GC 垃圾回收機制
    • 豐富的標準庫:網絡通信、數學、文件系統、數據結構、應用構建、加解密、測試、Email、輸入輸出、壓縮、同步鎖機制、進程線程等
  • 簡單易學
    • 25 個關鍵字
    • C 語言簡潔的基因,內嵌 C 語法支持
    • 面向對象特徵(繼承、多態、封裝)
    • 跨平台
  • “大廠” 領軍
    • Google、Facebook
    • 騰訊、百度、京東
    • 小米、七牛、滴滴、阿里、新浪、哔哩哔哩、字節

利用斐波那契數列算法簡單看看 Go 的性能情況:

  1. 編譯性能:Go > C > Node.js > PHP > C++ > Java > Python 3
  2. 運行性能:C++ > C > Go > Java > Node.js > PHP > Python 3

強項#

  1. 雲計算基礎設施領域。代表項目:docker、kubernetes、etcd、consul、cloudflare CDN、七牛雲存儲等。
  2. 基礎後端軟件。代表項目:tidb、influxdb、cockroachdb 等。
  3. 微服務。代表項目:go-kit、micro、monzo bank 的 typhon、bilibili 等。
  4. 互聯網基礎設施。代表項目:以太坊、hyperledger 等。

明星產品:Docker、Kubernetes

image.png

缺點#

  1. 包管理,大部分包都在 GitHub 上。
  2. 所有的 Exception 都用 Error 來處理(比較有争议,与 Java 完全相反)
  3. 對 C 的降級處理,并非無縫,沒有 C 降級到 asm 那麼完美(序列化問題,還不能取代 C)

環境安裝#

All releases - The Go Programming Language

Windows 下載 go1.23.2.windows-amd64.zipgo1.23.2.windows-amd64.msi ,並將其中的 bin 文件夾添加進環境變量:

在系統變量中,新建一個變量名為 GOROOT ,變量值為 Go 安裝目錄路徑。再新建一個變量名為 GOPATH,變量值為 Go 所有項目的根目錄路徑。最後在系統變量中的 path 路徑添加 %GOROOT\bin%

image.png

在 Go 項目目錄中創建 bin pkg src 三個目錄,其中 src 為我們編寫項目的根文件夾,binpkg 分別存放我們安裝的第三方依賴和插件。

image.png

在終端中輸入 go version 返回版本號 go version go1.23.2 windows/amd64,則安裝成功。

打開 VsCode 並安裝 Go 語言官方插件,打開終端並執行以下語句,方便安裝 Go 開發工具包

go env -w GO111MODULE=on
go env -w GOPROXY=https://goproxy.cn,direct

在 VsCode 中打開命令面板 Ctrl+Shift+p,輸入 Go install,選中 Install/Upadte Tools,勾選全部工具並安裝,工具會安裝到我們上方設置的 GOPATH 環境變量中的 bin pkg 文件夾中。

安裝完成後,新建一個項目文件夾 test,創建一個 main.go 文件,這時一定還要在這個文件夾中輸入 go mod init testtest 需要與項目文件夾的名字一樣。完成後會出現一個 go.mod,就可以編寫代碼了。

如果完成了以上所有操作,在 vscode 中編寫代碼依舊會報錯,則還需要在 VsCode 中重新設置 GOPATHGOROOT 的路徑。

image.png

語言結構#

Go 語言的基礎組成有以下幾個部分:

  1. 包聲明
  2. 引入包
  3. 函數
  4. 變量
  5. 語句 & 表達式
  6. 註釋
package main

import "fmt"

func main() {
   /* 這是第一個Go語言程序 */
   fmt.Println("Hello, World!")
}

package main 定義了包名。你必須在源文件中非註釋的第一行指明這個文件屬於哪個包,如:package main。package main 表示一個可獨立執行的程序,每個 Go 應用程序都包含一個名為 main 的包。當前程序有 main 函數,就是 main 包。 這與當前程序文件名沒有關係。

import "fmt" 告訴 Go 編譯器這個程序需要使用 fmt 包,fmt 包實現了格式化 IO(輸入 / 輸出)的函數。導入多個包時,可使用以下兩種方式,推薦第二種。

import "fmt"
import "time"

import (
    "fmt"
    "time"	
)

///* */ 分別是單行註釋和多行註釋,這與 C 語言一致

func main() 是程序開始執行的函數。main 函數是每一個可執行程序所必須包含的,一般來說都是在啟動後第一個執行的函數(如果有 init() 函數則會先執行該函數)。每個包只能有一個 main 函數,不能存在多個 main 函數聲明

需要注意的是,Go 語言中函數後的 { 必須跟函數名同一行,否則不能報錯。同時語句結尾的 ; 可加可不加,推薦不加。

func main(){
    fmt.Println("hello Go!")
    fmt.Println("hello Go!");
}

fmt.Println(...) 可以將字符串輸出到控制台,並在最後自動增加換行 \n,使用 fmt.Print(...) 效果相同。 PrintPrintln 這兩個函數也支持使用變量,如:fmt.Println(arr),如果沒有特別指定,它們會以默認的打印格式將變量 arr 輸出到控制台。

標識符(包括常量、變量、類型、函數名、結構字段等等)以一個大寫字母開頭,如:Group1,那麼使用這種形式的標識符的對象就可以被外部包的代碼所使用(客戶端程序需要先導入這個包),這被稱為導出(像面向對象語言中的 public);

標識符小寫字母開頭,則對包外是不可見的,但是他們在整個包的內部可見並且可用的(像面向對象語言中的 protected )。

Go 語言的執行有兩種方式:

  1. go run hello.go 直接編譯程序並執行
  2. go build hello.go 編譯成二進制文件後,./hello.go 執行二進制文件

參考課程:8 小時轉職 Golang 工程師

載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。