package 定義包名
import 匯入包名
const 常量宣告
var 變數宣告
func 函式定義
defer 延遲執行
go 併發語法糖
return 函式返回
struct 定義結構型別
inte***ce 定義介面型別
map 宣告或建立 map 型別
chan 宣告或建立通道型別
if else ifelse 使用
for range break continue for 迴圈使用
switch select type case default fallthrough switch 和 select 語句使用
goto goto 跳轉語句
表示固定值的符號
出現位置: 1.常量和變數的初始化; 2.用在表示式裡或作為函式呼叫的實參。
類別: 1.整型字面量;2.浮點型字面量;3.複數型別字面量;4.字元型字面量;5.字串字面量。
主動呼叫 os.exit(int)時,defer 函式不會被執行
20 個預宣告型別+使用者 type 自定義型別
由預宣告型別、關鍵字、操作符組合而成的型別時未命名型別。未命名型別又稱 型別字面量
基本型別中的復合型別:array slice map channel pointer function struct inte***ce 都屬於型別字面量,也都是未命名型別。
1.預定義型別和型別字面量的底層型別是他們本身;2.自定義型別 type newtype oldtype 中的 newtype 型別的底層型別遞迴往下找。 3.型別別名 type t1=t2 別名是同一型別。
1.給除了介面外的命名型別加方法;2.方法定義和型別定義必須在乙個包內;3.type 定義的型別不能用源型別的方法,但是可以用運算。
f:=x.m 是乙個帶有閉包的函式變數
可以看出 go 的方法底層是基於函式實現的:
func(t *t)set(i int){} 方法表示式是(*t).set 函式簽名是 func(t *t,i int)
func(t t)get()int{} 方法表示式是 t.set 函式簽名是 func(t t)
t:=t
普通方法呼叫
t.get(t)
方法表示式呼叫 編譯器不會自動轉換值和指標
(t).get(t)
(*t) . set (&t, 1)
方法表示式 值呼叫 (編譯器會自動轉換值和指標)
f1:=t.get;f1(t)
f2:=(t).get;f2(t)
f3 : = (*t) .set; f3(&t , 1)
方法集的接受者兩種型別:值型別和指標型別。形參都是值拷貝。
t 型別的方法集是 s
t 型別的方法集是s+s
編譯器的自動轉換僅適用於型別例項呼叫方法時才有效。
型別例項傳遞給介面時,編譯器不會自動轉換,而是嚴格校驗方法集。
type 定義的新型別不會繼承原有型別的方法。
但命名結構型別可以巢狀其他命名型別的字段。外層的結構型別可以呼叫內層嵌入字段型別的方法。可顯式和隱式呼叫。
簡寫呼叫會從外層往內層查詢欄位和方法。表面看外層會覆蓋內層。
組合的方法集規則:
s ,包含 t, 方法集=s+t;包含*t,方法集=s+t+*t
s,不管包含 t 還是t,方法集=s+*s+t+*t 。
Go 語言基礎
go 語言內建的運算子有 1.算術運算子 2.關係運算子 3.邏輯運算子 4.位運算子 將其先轉換為二進位制數,在根據如下表規則 p q p q p q p q 0 0 0 0 0 0 1 0 1 1 1 1 1 1 0 1 0 0 1 1如假定 a 60 b 13 其二進位制數轉換為 a 0011...
Go語言基礎
目錄 一.go語言內建關鍵字 二.go語言注釋方法 三.專案結構 四.程式結構 五.包的匯入 六.package的別名 七.可見性規則 單行注釋 多行注釋 go程式是通過package來組織的 只有package 名稱為main的包可以包含main函式 乙個可執行程式有且僅有乙個main包 初步練習...
Go基礎程式設計 Go語言介紹
2009年11月10日,go語言正式成為開源程式語言家庭的一員。go語言 或稱golang 是雲計算時代的c語言。go語言的誕生是為了讓程式設計師有更高的生產效率,go語言專門針對多處理器系統應用程式的程式設計進行了優化,使用go編譯的程式可以媲美c或c 的速度,而且更加安全 支援並行程序。開發人員...