package main;import "fmt"
func main() ;
//這裡傳入的是乙個slice,但外部變數確改變了,說明是位址拷貝。
c(d);
fmt.println(d);
e := 2;
//這裡把e的位址傳遞過去
d(&e);
fmt.println(e);
//函式e賦值給f
f := e;
f();
//匿名函式
g := func() ;
g();
//使用閉包
h := f(66);
//兩次呼叫都使用了66
fmt.println(h(66));
fmt.println(h(88));
//呼叫g函式,defer反向呼叫
g();
h();
//呼叫i函式
i();
}//go函式不支援巢狀,過載和預設引數
//定義函式
//func 函式名(引數列表) (返回值)
func a(a int, b int, c int) (int, int, int)
//不定長變參,必須作為引數列表最後的引數
//傳入的是乙個slice
func b(a ...int)
}//傳遞slice
func c(a int)
}//傳遞指標
func d(a *int)
//函式也是乙個型別
func e()
//閉包
//返回值是乙個函式
func f(a int) (func(int) int) ;
}//defer執行方式類似其它語言中的析構函式
//在函式體執行結束後,按照呼叫順序的相反順序逐個執行
//常用於資源清理,檔案關閉,解鎖
func g()
func h() ();
} //這裡的輸出就跟上面的不一樣,輸出2,1,0
for i := 0; i < 3; i++ (i); }}
//go裡面沒有異常機制,但有panic/recover來處理錯誤
//panic可以在任何地方引發,但recover只在defer呼叫的函式中有效
func i()
func j()
func k()
}();
panic("panic in func k");
}func m()
Go語言中的函式
函式就是一段 的封裝,把一段抽象的邏輯封裝成乙個函式,給他起個名,每次需要用到的時候直接呼叫函式名就可以。基本語法 func 函式名 形式引數 形式引數型別 返回值 返回值型別 乙個函式的返回值可以有乙個,可以有多個,也可以沒有返回值。package main import fmt func add...
go 語言中的繼承
go 語言中可以通過匿名field來實現繼承的效果,type t1 struct func t t1 log func t t1 print type t2 struct t2 t2 可以通過t2.log 直接訪問t1的method,就像物件導向的繼承之後一樣訪問,不過這裡要注意的傳遞到log的是t...
Go語言中的常量
常量,一經定義不可更改的量。功能角度看,當出現不需要被更改的資料時,應該使用常量進行儲存,例如圓周率。從語法的角度看,使用常量可以保證資料,在整個執行期間內,不會被更改。例如當預處理器的架構型別,可以保證不被更改。語法如下 const 常量名 可選的型別 常量值 const c1 int 1000g...