go語言的學習 控制結構與函式

2021-10-10 04:33:18 字數 2970 閱讀 9101

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...