亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

一文了解Go語言中的函數(shù)與方法的用法

 更新時間:2022年07月05日 10:29:46   作者:孫琦Ray  
與大部分語言一致,Go語言中的函數(shù)與方法定義與其他語言基本一致,但也有一定的差別。本文將通過示例詳細講講Go語言中函數(shù)與方法的用法,感興趣的可以學習一下

函數(shù)定義語法

與大部分語言一致,Go語言中的函數(shù)定義與其他語言基本一致

func function_name(Parameter-list) {
    // function body...
}

func function_name(Parameter-list) Return-Type {
    // function body...
}

func function_name(Parameter-list) (Multiple Return-Types){
    // function body..
}

func: 函數(shù)定義關(guān)鍵字

function_name: 函數(shù)名稱,Go語言主要使用camel-case(駝峰)命名的方式,還根據(jù)函數(shù)的性質(zhì),用首字母大小寫區(qū)分作用,具體會在后面專門的章節(jié)講解Go語言的規(guī)范

Parameter-list: 參數(shù)列表,如果沒有可以忽略

Return-Type/Multiple Return-Types: 返回值的類型,即return返回值的類型,這里特別將三種形式進行了區(qū)分:

  • 無返回值/單一返回值/多返回值
  • 另外兩種的細小的區(qū)別在于括號的使用,單一返回類型一般不再添加括號,而多返回值則需要添加括號
  • 另外為了美觀,參數(shù)列表后面的括號,建議與返回類型之間有一個空格

函數(shù)定義示例

無返回值函數(shù)

func HelloFunc() {
    fmt.Println("Hello, World")
}

單一返回值函數(shù)

本示例中演示了參數(shù)定義方法和返回值類型定義方法

func HelloFunc(msg string) string {
    return "Hello, " + msg
}

多返回值函數(shù)

第二個返回值的類型通常用于回傳錯誤,這樣方便程序進行異常處理

func HelloFunc(msg string) (string, error) {
    return "Hello, " + msg, nil
}

我們再來看一下完整的代碼實現(xiàn),主函數(shù)中調(diào)用HelloFunc時,也需要兩個變量接收相應的值

package main

import "fmt"

func HelloFunc(msg string) (string, error) {
    return "Hello, " + msg, nil
}

func main() {
    printString, err := HelloFunc("World")
    if err == nil {
        fmt.Println(printString)
    }
}

方法(Method)定義

Go語言中并沒有類,所以在Go語言中提供了一種類似函數(shù)定義的方法定義,通過在函數(shù)名稱前增加Reciever類型,實現(xiàn)一種類似類中方法的定義,方法可以使用Reciver的屬性。我們來看一下語法:

func (Reciever-Name Type) function_name(Parameter-list) (Multiple Return-Types){
    // function body..
}

由于大部分定義內(nèi)容與上述函數(shù)定義相同,這里就不再贅述,只介紹一下新增的部分:

Reciever-Name:類型必須是自定義類型,不能是內(nèi)置的int, string等,使用的話,在編譯階段就會報錯

方法(Method)示例

基本類型

我們來看一個通過基本類型實現(xiàn)的方法,這里使用到了一個未曾學習到的知識點——自定義類型type,后面還會詳細講解,不用在此處糾結(jié)。這句含義就是通過自定義類型mystring再次定義的變量,本質(zhì)上與string同一類型。

type mystring string

這里注意我們的函數(shù)定義,在函數(shù)名前,多了(msg mystring)的定義,而在函數(shù)體內(nèi),我們也可以直接使用msg

func (msg mystring) HelloFunc() {
    str := "Hello, " + msg
    fmt.Println(str)
}

而在main函數(shù)中進行調(diào)用時,與上面的函數(shù)調(diào)用不同,我們直接使用調(diào)用mymsg的方法HelloFunc,實現(xiàn)了與上面例子類似的方法

var mymsg mystring
mymsg = "World"
mymsg.HelloFunc()

完整代碼如下所示

package main

import "fmt"

type mystring string

func (msg mystring) HelloFunc() {
    str := "Hello, " + msg
    fmt.Println(str)
}

func main() {
    var mymsg mystring
    mymsg = "World"
    mymsg.HelloFunc()
}

結(jié)構(gòu)體類型

其實從各個項目的源代碼來看,方法還是更多的與結(jié)構(gòu)體(struct)和接口(interface)一起使用,這些都會在后面進行詳細講解,這里只需要了解即可。這里介紹一個簡單的例子,我們來計算長方形的面積。

  • 定義了一個結(jié)構(gòu)體rect,其中包含長和寬兩個屬性
  • 計算面積的方法area(),Reciver定義為結(jié)構(gòu)體類型,這樣方法體內(nèi),就可以使用長和寬計算面積
  • 主函數(shù)中,定義了一個結(jié)構(gòu)體,并且初始化長和寬分別為3和4
  • 調(diào)用自定義結(jié)構(gòu)體的r.area()完成面積計算
package main

import "fmt"

type rect struct {
    width float64
    height float64
}

func (r rect) area() float64 {
    return r.width * r.height
}

func main() {
    r := rect{3, 4}
    rectArea := r.area()
    fmt.Printf("Rect area is %v\n", rectArea)
}

到此這篇關(guān)于一文了解Go語言中的函數(shù)與方法的用法的文章就介紹到這了,更多相關(guān)Go語言 函數(shù) 方法內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 解析Golang和Java的優(yōu)勢與劣勢

    解析Golang和Java的優(yōu)勢與劣勢

    Golang和Java是兩種流行的編程語言,它們在很多方面有著相似之處,但也存在一些重要的區(qū)別,本文將對Golang和Java進行對比,探討它們的特點和適用場景,需要的朋友可以參考下
    2023-10-10
  • 利用golang的字符串解決leetcode翻轉(zhuǎn)字符串里的單詞

    利用golang的字符串解決leetcode翻轉(zhuǎn)字符串里的單詞

    這篇文章主要介紹了利用golang的字符串解決leetcode翻轉(zhuǎn)字符串里的單詞,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-12-12
  • go語言實現(xiàn)接口查詢

    go語言實現(xiàn)接口查詢

    這篇文章主要介紹了go語言實現(xiàn)接口查詢,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-12-12
  • Go語言Time包的具體使用

    Go語言Time包的具體使用

    Go語言中有關(guān)于時間和日期的方法都在time包里面,本文主要介紹了Go語言Time包,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2024-07-07
  • 淺談go build后加文件和目錄的區(qū)別

    淺談go build后加文件和目錄的區(qū)別

    這篇文章主要介紹了淺談go build后加文件和目錄的區(qū)別,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-12-12
  • Golang中panic的異常處理

    Golang中panic的異常處理

    本文主要介紹了Golang中panic的異常處理,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-08-08
  • Go實現(xiàn)圖片上添加水印的示例代碼

    Go實現(xiàn)圖片上添加水印的示例代碼

    本文主要介紹了Go實現(xiàn)圖片上添加水印的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2025-05-05
  • Golang測試func?TestXX(t?*testing.T)的使用詳解

    Golang測試func?TestXX(t?*testing.T)的使用詳解

    一般Golang中的測試代碼都以xxx_test.go的樣式,在命名測試函數(shù)的時候以Testxx開頭,下面給大家介紹Golang測試func?TestXX(t?*testing.T)的使用,感興趣的朋友跟隨小編一起看看吧
    2024-08-08
  • go使用makefile腳本編譯應用的方法小結(jié)

    go使用makefile腳本編譯應用的方法小結(jié)

    makefile可以看作是make工具的腳本文件, 而make主要用來處理一系列命令。常用的比如用來編譯和打包文件, 在C/C++的編譯打包中應用最廣泛了,這篇文章主要介紹了go使用makefile腳本編譯應用,需要的朋友可以參考下
    2022-08-08
  • 利用Golang生成整數(shù)隨機數(shù)方法示例

    利用Golang生成整數(shù)隨機數(shù)方法示例

    這篇文章主要介紹了利用Golang生成整數(shù)隨機數(shù)的相關(guān)資料,文中給出了詳細的介紹和完整的示例代碼,相信對大家具有一定的參考價值,需要的朋友們下面來一起看看吧。
    2017-04-04

最新評論