Go基礎之封裝Go 結構體及常用命令

2021-10-13 17:17:57 字數 2195 閱讀 9994

go語言僅支援封裝,不支援繼承/多型。

1. go 結構體 (struct)

結構體就是乙個複雜的資料型別,裡面可以包含字段,也可以巢狀其他結構體

go 中沒有 class,而是使用 struct 。

結構體命名一般都是用camelcase,首字母大寫表示public,首字母小寫表示private,和go變數定義一樣。

type treenode struct

go語言採用的是目錄分包,同乙個目錄下是乙個包,在檔案開頭使用package宣告。對同乙個結構體的方法聲名可以在不同的檔案中,但必須是在同乙個包下面。

go語言建議結構體的名稱不要重複包名,同時為了能在其他包訪問node結構體,將上面的treenode定義修改如下:

package tree

type node struct

定義go結構體的方法時,和其他語言不同的是,他需要手動自定函式方法的接受者,可以是指也可以是指標。但是只用者並不需要關心接受者是什麼值還是指標,統一呼叫。

//值

func

(node node)

print()

//指標

func

(node *node)

setvalue

(value int

) node.value = value

}func

main()

root.left =

&node

root.right =

&node

root.

print()

//值型別呼叫

left := root,left

left.

print()

//指標型別呼叫

}

2. go常用命令

檢視可用命令

直接在終端中輸入go help即可顯示所有的 go 命令以及相應命令功能簡介,主要有下面這些:

build 和 run 命令

就像其他靜態型別語言一樣,要執行 go 程式,需要先編譯,然後在執行產生的可執行檔案。go build 命令就是用來編譯 go程式生成可執行檔案的。但並不是所以的 go 程式都可以編譯生成可執行檔案的, 要生成可執行檔案,go程式需要滿足兩個條件:1)該go程式需要屬於main包2)在main包中必須還得包含main函式。

go build main.

go # 將會生成可執行檔案 main

./main # 執行可執行檔案

#go run 命令可以將上面兩步並為一步執行

go run main.

go#go clean 命令,可以用於將清除產生的可執行程式

go clean # 不加引數,可以刪除當前目錄下的所有可執行檔案

go clean ***.

go # 會刪除對應的可執行檔案

get 命令
# src路徑

go get src

#示例go get github.com/qqxhb/exampl

go get github.com.

/gpmgo/gopm

install 命令

用來編譯和安裝go程式,我們可以將它與 build 命令對比:

install

生成的可執行檔案路徑:工作目錄下的bin目錄下

可執行檔案的名字:與原始碼所在目錄同名

依賴:將依賴的包放到工作目錄下的pkg資料夾下

build

生成的可執行檔案路徑:當前目錄下

可執行檔案的名字:預設與源程式同名,可以使用-o選項指定

test 命令

顧名思義,用來執行測試的命令,這種測試是以包為單位的。需要遵循一定規則:

測試原始檔是名稱以「_test.go」為字尾的

測試原始檔內含若干測試函式的原始碼檔案

測試函式一般是以「test」為名稱字首, 並有乙個型別為「testing.t」的引數。

Go語言基礎之結構體反射

反射在結構體中的應用,才是最廣泛的!畢竟在go中,是用結構體代替物件的!所以最多的,最麻煩的,也是反射結構體,也是最靈活的!上次講的,只是在普通變數中的應用,相對來說,使用的場景不是太多。但是反射在結構體中的應用,基本會貫穿整個go語言基礎。示例 type student struct func m...

go語言 結構體及結構體指標

結構體 struct 是由一系列具有相同型別或不同型別的資料構成的資料集合,也叫結構。可以理解為其他程式語言中的類 結構體既可以定義在函式內,也可以定義在函式外,函式外為全域性結構體可以跨包訪問 前提是結構體首字母大寫 結構體變數是值型別,可以使用fmt.printf p 結構體變數 來檢視其記憶體...

go 修改結構體方法 go結構體方法

golang中的方法是作用在特定型別的變數上,因此自定義型別,都可以有方法,而不僅僅是struct。定義格式 func var struct name funcname var0,var1.return type package main import fmt type test struct na...