Go語言函式

2021-08-10 03:59:35 字數 3735 閱讀 4068

go語言函式function

go函式不支援巢狀、過載和預設引數

但支援以下特性:

無需宣告原型、不定長度引數、多返回值、命名返回值引數、匿名函式、閉包

定義函式使用關鍵字func,且左大括號不能另起一行

函式也可以作為一種型別使用

不定引數

不定引數的傳遞:

任意型別的不定引數:

如果你希望傳任意型別的不定引數,可以指定型別為inte***ce{},下面是go語言標準庫中fmt.printf()的函式原型:

func printf(format string, args ...inte***ce{}){

//...

用inte***ce{}傳遞任意型別資料是go語言的管理用法。使用inte***ce{}仍然是型別安全的。

defer的執行方式類似其他語言的析構函式,在函式體執行結束後按照呼叫順序的相反順序逐個呼叫

即使函式發生嚴重錯誤也會執行

支援匿名函式的呼叫

常用於資源清理,檔案關閉,解鎖以及記錄時間等操作

通過與匿名函式配合可以在return之後修改函式計算結果

如果函式體內某個變數作為defer時匿名函式的引數,則在定義defer時即已經獲得了拷貝,否則則是引用某個變數的位址

go沒有異常機制,但有panic/recover模式來處理錯誤

panic可以在任何地方引發,但recover只有在defer呼叫的函式中有效

函式定義

go語言函式定義格式如下:

func function_name([

parameter list])

[return_types

](

[parameter list])

[return_types

]

函式定**析:

func:函式由func開始宣告

function_name:函式名稱,函式名稱和引數列表一起構成了函式簽名;

parameter list:引數列表,引數就像乙個佔位符,當函式被呼叫時,可以將值傳遞給引數,這個值被稱為實際引數。引數列表指定的是引數型別、順序、及引數個數。引數是可選的,也就是函式也可以不包含引數。

return_types:返回型別,函式返回以列值。return_types是該列值的資料型別。有些功能不需要返回值,這種情況下reutrn_types不是必須的;

函式體:函式定義的**集合

函式呼叫

當建立函式時,定義了函式需要做什麼,通過呼叫該函式執行指定任務。

呼叫函式,向函式傳遞引數,並返回值。

函式返回多個值

go函式可以返回多個值。

函式引數

函式如果使用引數,該變數可稱為函式的形參

形參就像定義在函式體內的區域性變數

呼叫函式,可以通過兩種方式來傳遞引數:

函式用法

函式作為值:

go 語言可以很靈活的建立函式,並作為值使用。以下例項中我們在定義的函式中初始化乙個變數,該函式僅僅是為了使用內建函式 math.sqrt() ,例項為:

package

main

import

("fmt"

"math"

)func main

()/* 使用函式 */

fmt.

println

(getsquareroot(9

))}main

import

("fmt"

"math"

)func main

()/* 使用函式 */

fmt.

println

(getsquareroot(9

))}

以上**執行結果為:

3
閉包go 語言支援匿名函式,可作為閉包。匿名函式是乙個"內聯"語句或表示式。匿名函式的優越性在於可以直接使用函式內的變數,不必申明。

以下例項中,我們建立了函式 getsequence() ,返回另外乙個函式。該函式的目的是在閉包中遞增 i 變數,**如下:

package main

import "fmt"

func getsequence() func() int

}func main()

以上**執行結果為:

123

12

方法:

go 語言中同時有函式和方法。乙個方法就是乙個包含了接受者的函式,接受者可以是命名型別或者結構體型別的乙個值或者是乙個指標。所有給定型別的方法屬於該型別的方法集。語法格式如下:

func (variable_name variable_data_type) function_name() [return_type]
下面定義乙個結構體型別和該型別的乙個方法:

package main

import (

"fmt"

)/* 定義函式 */

type circle struct

func main()

//該 method 屬於 circle 型別物件中的方法

func (c circle) getarea() float64

以上**執行結果為:

area of circle(c1) =  314
本文參考

Go語言 函式

函式是結構化程式設計的最小模組單元,使用關鍵字 func 定義函式。go語言定義函式的一些特點總結如下 無需前置宣告 不支援命名巢狀定義 不支援同名函式過載 不支援預設引數 支援不定長變參 支援多返回值 支援命名返回值 支援匿名函式和閉包 函式屬於第一類物件,具備相同簽名 引數及返回值型別 的視為同...

Go 語言函式

func function name parameter list return types parameter list 引數列表,引數就像乙個佔位符,當函式被呼叫時,你可以將值傳遞給引數,這個值被稱為實際引數。引數列表指定的是引數型別 順序 及引數個數。引數是可選的,也就是說函式也可以不包含引數...

Go語言函式

和c語言一樣,go語言也有函式,在go中函式用func關鍵字標識,其定義格式如下 func 函式名 引數1 引數2 返回值1 返回值2 比較有特色的地方是go語言可以返回多個返回值。package main import fmt func intsum1 x,y int int func intsu...