Golang中函數(shù)(Function)和方法(Method)的區(qū)別詳解
函數(shù)(Function)
函數(shù)是 Golang 程序的基本組成部分之一,是一段獨(dú)立的代碼塊,可以被獨(dú)立地定義和調(diào)用。函數(shù)的定義以 func 關(guān)鍵字開始,后面跟著函數(shù)名、參數(shù)列表、返回值類型和函數(shù)體??匆粋€(gè)簡單的函數(shù)定義示例:
func add(a b int) int {
return a + b
}函數(shù)的調(diào)用方式是通過函數(shù)名和參數(shù)列表完成的。例如:
result := add(2, 3)
函數(shù)的其他更多特點(diǎn)和類型就不展開講了,不是本文的重點(diǎn)。本文只簡單介紹下函數(shù)的基本定義,重點(diǎn)是說明函數(shù)和方法的異同點(diǎn)。
方法(Method)
方法是與特定類型(結(jié)構(gòu)體類型、函數(shù)類型、接口類型等)相關(guān)聯(lián)的函數(shù)。是在類型的定義之外定義的,但與該類型緊密關(guān)聯(lián)。方法的定義類似于函數(shù),但在函數(shù)名之前會添加一個(gè)接收者(receiver),指定方法屬于哪個(gè)類型。以下是一個(gè)簡單的方法示例:
type Rectangle struct {
width float64
height float64
}
// 定義 Area 方法
func (r Rectangle) Area() float64 {
return r.width * r.height
}首先定義了一個(gè)名為 Rectangle 的結(jié)構(gòu)體類型,然后定義了一個(gè)名為 Area 的方法,該方法接收一個(gè) Rectangle 類型的接收者。
方法的調(diào)用與函數(shù)類似,但需要先實(shí)例化一個(gè)對應(yīng)的接收者類型的實(shí)例,通過這個(gè)實(shí)例調(diào)用的方式來執(zhí)行。例如:
rect := Rectangle{width: 3, height: 4}
area := rect.Area()這段代碼首先創(chuàng)建了一個(gè) Rectangle 類型的實(shí)例,然后通過這個(gè)實(shí)例調(diào)用了 Area 方法。
可以看出,方法是通過接收者與類型綁定的,因此可以在方法內(nèi)部訪問接收者類型的字段和方法。而函數(shù)則是獨(dú)立存在的,沒有與特定類型相關(guān)聯(lián)。
小結(jié)
函數(shù)和方法都是用來執(zhí)行特定任務(wù)的代碼塊,定義和使用都非常類似,主要有兩點(diǎn)不同:
- 函數(shù)是獨(dú)立存在的,而方法是與特定類型相關(guān)聯(lián)的;
- 函數(shù)可以直接調(diào)用,而方法調(diào)用需要通過對應(yīng)的接收者類型實(shí)例。
到此這篇關(guān)于Golang中函數(shù)(Function)和方法(Method)的區(qū)別詳解的文章就介紹到這了,更多相關(guān)Golang函數(shù)和方法區(qū)別內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Go語言編程中判斷文件是否存在是創(chuàng)建目錄的方法
這篇文章主要介紹了Go語言編程中判斷文件是否存在是創(chuàng)建目錄的方法,示例都是使用os包下的函數(shù),需要的朋友可以參考下2015-10-10
全面解析Golang 中的 Gorilla CORS 中間件正確用法
Golang 中使用 gorilla/mux 路由器配合 rs/cors 中間件庫可以優(yōu)雅地解決這個(gè)問題,然而,很多人剛開始使用時(shí)會遇到配置不生效的問題,本文將詳細(xì)介紹其正確用法,感興趣的朋友一起看看吧2025-07-07
Golang將Map的鍵值對調(diào)的實(shí)現(xiàn)示例
本文主要介紹了Golang將Map的鍵值對調(diào)的實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-02-02
Go語言函數(shù)的延遲調(diào)用(Deferred Code)詳解
本文將介紹Go語言函數(shù)和方法中的延遲調(diào)用,正如名稱一樣,這部分定義不會立即執(zhí)行,一般會在函數(shù)返回前再被調(diào)用,我們通過一些示例來了解一下延遲調(diào)用的使用場景2022-07-07
使用Go實(shí)現(xiàn)文件復(fù)制的完整流程
本案例將實(shí)現(xiàn)一個(gè)實(shí)用的文件操作工具:將一個(gè)文件的內(nèi)容完整復(fù)制到另一個(gè)文件中, 這是文件處理中的常見任務(wù),比如配置文件備份、日志遷移、用戶上傳文件轉(zhuǎn)存等,文中通過代碼示例介紹的非常詳細(xì),需要的朋友可以參考下2025-07-07
golang 執(zhí)行命令行的實(shí)現(xiàn)
本文主要介紹了golang 執(zhí)行命令行的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-08-08
gin自定義中間件解決requestBody不可重讀(請求體取值)
這篇文章主要介紹了gin自定義中間件解決requestBody不可重讀,確??刂破髂軌颢@取請求體值,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-10-10
解決Golang小數(shù)float64在實(shí)際工程中加減乘除的精度問題
這篇文章主要介紹了解決Golang小數(shù)float64在實(shí)際工程中加減乘除的精度問題,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-03-03

