目錄
- Golang檔案名
- Go語言命名
- Go語言宣告
- 資料型別
- 關鍵字
- 25個關鍵字或保留字
- 36個預定義識別符號
- 識別符號

Golang檔案名
所有的go原始碼都是以 ".go" 結尾,`
Go語言命名
Go的函式、變數、常量、自定義型別、包(package)的命名方式遵循以下規則:
- 首字符可以是任意的
Unicode字符或者下劃線 - 剩余字符可以是
Unicode字符、下劃線、數字 - 字符長度不限
Go語言宣告
有四種主要宣告方式:
var(宣告變數), const(宣告常量), type(宣告型別) ,func(宣告函式),
Go的程式是保存在多個.go檔案中,檔案的第一行就是package XXX宣告,用來說明該檔案屬于哪個包(package),package宣告下來就是import宣告,再下來是型別,變數,常量,函式的宣告,
Go專案構建及編譯
一個Go工程中主要包含以下三個目錄:
src:源代碼檔案
pkg:包檔案
bin:相關bin檔案
- 建立工程檔案夾
goproject - 在工程檔案夾中建立
src,pkg,bin檔案夾 - 在
GOPATH中添加projiect路徑 例e:/goproject - 如工程中有自己的包
examplepackage,那在src檔案夾下建立以包名命名的檔案夾 例examplepackage - 在
src檔案夾下撰寫主程式代碼代碼goproject.go - 在
examplepackage檔案夾中撰寫examplepackage.go和 包測驗檔案examplepackage_test.go - 編譯除錯包
go build examplepackagego test examplepackagego install examplepackage
這時在pkg檔案夾中可以發現會有一個相應的作業系統檔案夾如windows_386z, 在這個檔案夾中會有examplepackage檔案夾,在該檔案中有examplepackage.a檔案- 編譯主程式
go build goproject.go
成功后會生成goproject.exe檔案
至此一個Go工程編輯成功,
go 編譯問題
golang的編譯使用命令go build,go install;除非僅寫一個main函式,否則還是準備好目錄結構;GOPATH=工程根目錄;其下應創建src,pkg,bin目錄,bin目錄中用于生成可執行檔案,pkg目錄中用于生成.a檔案; golang中的import name,實際是到GOPATH中去尋找name.a, 使用時是該name.a的原始碼中宣告的package名字;
注意點:
- 系統編譯時
go install abc_name時,系統會到GOPATH的src目錄中尋找abc_name目錄,然后編譯其下的go檔案; - 同一個目錄中所有的
go檔案的package宣告必須相同,所以main方法要單獨放一個檔案,否則在eclipse和liteide中都會報錯;
編譯報錯如下:(假設test目錄中有個main.go和mymath.go,其中main.go宣告package為main,mymath.go宣告packag為test);
$ go install test
can't load package: package test: found packages main (main.go) and test (mymath.go) in /home/wanjm/go/src/test
報錯說 不能加載package test(這是命令列的引數),因為發現了兩個package,分別時main.go 和 mymath.go;
- 對于
main方法,只能在bin目錄下運行go build path_tomain.go; 可以用-o引數指出輸出檔案名; - 可以添加引數
go build -gcflags "-N -l" ****,可以更好的便于gdb;詳細可以參考http://golang.org/doc/gdb gdb全域變數主一點, 如有全域變數a;則應寫為p 'main.a';注意但引號不可少;
資料型別
按類別
- 布爾型:只可以是常量
true或者false,
var b bool = true
-
數字型別:整型和浮點型,
-
位的運算采用補碼字串型別:字串就是一串固定長度的字符連接起來的字符序列,Go 的字串是由單個位元組連接起來,
-
Go語言的字串的位元組使用UTF-8編碼標識Unicode文本 -
復數:
complex128(64位實數和虛數)和complex64(32位實數和虛數),其中complex128為復數的默認型別, 注:- 復數的值由三部分組成
RE + IMi,其中RE是實數部分,IM是虛數部分,RE和IM均為float型別,而最后的i是虛數單位,var name complex128 = complex(x, y) 或者 z := complex(x, y) x = real(z) y = imag(z) - 復數也可以用
==和!=進行相等比較,只有兩個復數的實部和虛部都相等的時候它們才是相等的,
- 復數的值由三部分組成
派生型別
- 指標型別(
Pointer) - 陣列型別
- 結構化型別(
struct) Channel型別- 函式型別
- 切片型別
- 介面型別(
interface) Map型別
基于架構
整型,同時提供了四種有符號整型,分別對應8、16、32、64bit(二進制)的有符號整數,與此對應四種無符號的整數型別
Uint8無符號8位整型 (0到255)Unit16Unit32Unit64int8int16int32int64
浮點型
float32float64complex64(實數虛數)complex128
其他
byteruneuintintuintptr(無符號整型,存放一個指標)
** 注**:
- 表示
Unicode字符的rune型別和int32型別是等價的,通常用于表示一個Unicode碼點,是等價的, byte和uint8也是等價型別,byte型別一般用于強調數值是一個原始的資料而不是一個小的整數,- 無符號的整數型別
uintptr,它沒有指定具體的bit大小但是足以容納指標,只有在底層編程時才需要,特別是Go語言和C語言函式庫或作業系統介面相互動的地方, - 有符號整數采用
2的補碼形式表示,也就是最高bit位用來表示符號位,一個n-bit的有符號數的取值范圍是從-2(n-1)到2(n-1)-1,無符號整數的所有bit位都用于表示非負數,取值范圍是0到2n-1, - 常量
math.MaxFloat32表示float32能取到的最大數值,大約是3.4e38, - 常量
math.MaxFloat64表示float64能取到的最大數值,大約是1.8e308, float32和float64能表示的最小值分別為1.4e-45和4.9e-324,- 浮點數在宣告的時候可以只寫整數部分或者小數部分
const e = .71828 // 0.71828
const f = 1. // 1
- 很小或很大的數最好用科學計數法書寫,通過
e或E來指定指數部分
const Avogadro = 6.02214129e23 // 阿伏伽德羅常數
const Planck = 6.62606957e-34 // 普朗克常數
關鍵字
25個關鍵字或保留字
break、 default、func、interface、 select、 case、 defer、 go、 map、 struct、 chan、 else、 goto、 package、 switch、 const、 fallthrough、 if、 range、 type、 continue、 for、 import、 return、 var
36 個預定義識別符號
append、 bool、 byte、 cap、 close、 complex、 complex64、 complex128、 uint16、 copy 、false、 float32、 float64、 imag 、int 、int8 、int16、 uint32、 int32、 int64、 iota、 len、 make、 new、 nil、 panic、 uint64、 print、 println、 real、 recover、 string 、true、 uint、 uint8、 uintptr
知識點
- 程式一般由關鍵字、常量、變數、運算子、型別和函陣列成,
- 程式中可能會使用到這些分隔符:括號
(),中括號[]和大括號{}, - 程式中可能會使用到這些標點符號:
.、,、;、:和…,
識別符號
識別符號用來命名變數、型別等程式物體,一個識別符號實際上就是一個或是多個字母(A~ Z和a~ z)數字(0~9)、下劃線“_”組成的序列,但是第一個字符必須是字母或下劃線而不能是數字,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/236098.html
標籤:區塊鏈
