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 命令對比:
installtest 命令生成的可執行檔案路徑:工作目錄下的bin目錄下
可執行檔案的名字:與原始碼所在目錄同名
依賴:將依賴的包放到工作目錄下的pkg資料夾下
build
生成的可執行檔案路徑:當前目錄下
可執行檔案的名字:預設與源程式同名,可以使用-o選項指定
顧名思義,用來執行測試的命令,這種測試是以包為單位的。需要遵循一定規則:
測試原始檔是名稱以「_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...