Go語言基礎漫談

2021-10-04 03:07:47 字數 1696 閱讀 7874

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 的速度,而且更加安全 支援並行程序。開發人員...