if val :=
10; val在函式程式設計中,經常會使用多返回值的型式,多個乙個錯誤型別error的返回,表示出現的錯誤。
如果沒有出現錯誤,則error返回為nil,否則返回錯誤資訊
switch結構
switch可以不提供任何被判斷的值,然後在每個case分支中進行測試不同的條件
例如:
switch
switch 語句還可以包含乙個初始化語句
switch result :=
calculate()
;
swtich語句還可以用於type-switch來判斷某個inte***ce變數中實際儲存的變數型別
for語句
for語句只含判斷條件
func
main()
也可以把判斷條件也去掉,這樣會變成乙個死迴圈
for-range結構
命名返回值和非命名返回值的區別:
命名返回值作為結果形參被初始化為相應型別的零值
命名返回值,返回時只需要一條簡單的不帶引數的return語句
即使使用命名返回值,也可以無視他明確返回
func
getx2andx3
(input int)(
int,
int)
func
getx2andx3_2
(input int
)(x2 int
, x3 int
)
改變外部變數傳遞指標給函式不但可以節省記憶體,而且賦予了函式直接修改外部變數的能力
package main
import
("fmt"
)// this function changes reply:
func
multiply
(a, b int
, reply *
int)
func
main()
傳遞變長引數如果想要達到不同型別的長引數 應該如果傳遞
使用結構
type options struct
使用空介面
如果乙個變長引數的型別沒有被指定,可以使用預設的空介面inte***ce{},可以接收任何型別的引數
這方案不僅可以用來長度未知的引數,還可以用於任何不確定型別的引數
func typecheck(…,…,values … inte***ce{}) }}
對空介面的理解
指向型別相關資訊的指標
指向資料相關資訊的指標
defer關鍵字
package main
import
"fmt"
func
main()
func
function1()
func
function2()
//輸出結果是 132
特殊情況,這是fmt.print()的坑,在i++後面列印出來是1
funca(
)// 這裡列印出來的 i是 0
當有多個defer行為被註冊時,它們會以逆序執行(類似棧,即後進先出)
內建函式
名稱說明
close
用於管道通訊
len、cap len
用於返回某個型別的長度或數量(字串、陣列、切片、map 和管道);cap 是容量的意思,用於返回某個型別的最大容量(只能用於切片和 map)
new、make
new 和 make 均是用於分配記憶體:new 用於值型別和使用者定義的型別,如自定義結構,make 用於內建引用型別(切片、map 和管道)。它們的用法就像是函式,但是將型別作為引數:new (type)、make (type)。new (t) 分配型別 t 的零值並返回其位址,也就是指向型別 t 的指標。它也可以被用於基本型別:v := new(int)。make (t) 返回型別 t 的初始化之後的值,因此它比 new 進行更多的工作(詳見第 7.2.3/4 節、第 8.1.1 節和第 14.2.1 節)new () 是乙個函式,不要忘記它的括號
用於複製和連線切片
panic、recover
兩者均用於錯誤處理機制
print、println
底層列印函式(詳見第 4.2 節),在部署環境中建議使用 fmt 包
complex、real、imag
用於建立和操作複數(詳見第 4.5.2.2 節)
閉包
package main
import
"fmt"
func
main()
func
adder()
func
(int
)int
}
結果:
1-21
-321
計算函式執行時間start := time.
now(
)longcalculation()
end := time.
now(
)delta := end.
sub(start)
fmt.
printf
("longcalculation took this amount of time: %s\n"
, delta)
go 語言結構控制
if else 結構 第一種if condition 第二種 ifcondition else 第三種 ifcondition1 else ifcondition2 else 注意大括號的位置,都是固定的 if在condition 中還可以加上賦值語句 if val 10 val max switc...
Go語言學習筆記 三 控制結構 內建函式
日期 2014年7月21日 一 控制結構 1 go中,只有幾個控制結構,它沒有do或者while迴圈,有for,靈活的switch語句和if,在switch中可以接受像for那樣可選的初始化語句,另外go中還提供了型別選擇和多路通訊轉接器的select。go的控制結構的語法和c相比有所不同,它不需要...
go流程控制與函式
package main import fmt func main else 多條件判斷 a 15 if a 0 a 10 else if a 10 a 20 else if a 20 goto跳轉當前函式內定義的標籤 b 10 test if b 0 for迴圈 sum 0 for i 0 i 1...