Golang參數默認值

一、Golang參數默認值介紹

Golang是一種編譯型語言,具有快速和高效的特性。在默認情況下,所有參數都是必需的,但是在某些特定情況下,應該使用默認值。Golang提供了在函數定義時設置參數的默認值的功能。在函數調用時,如果實參沒有指定參數,則使用定義時設置的值。

參數默認值我們可以用常量或變量來設置。Golang使用非空接口類型來實現默認值,同一參數可以有多個默認值,只需將它們定義為有相同接口類型的常量即可。例如:

func Add(a int, b int, c ...int)(res int) {
    for _, v := range c {
        res += v
    }
    return a + b + res
} 
func main() {
    fmt.Println(Add(1, 2, 3)) //6
    fmt.Println(Add(1, 2)) //3
}

二、Golang函數參數默認值的限制

Golang函數參數默認值有以下限制:

1、參數列表必須是連續的,即不能給中間參數設置默認值,需要連續賦值;

2、一個參數只能有一個默認值;

3、只有在相應位置的參數沒有被傳入時,才會採用該位置的默認參數。

例如:

func Add(a int, b int, c int, d int=4)int{
    return a + b + c +d
}
func main() {
    fmt.Println(Add(1,2,3)) //10
    fmt.Println(Add(1,2,3,4)) //10
}

三、Golang用空接口實現任意類型參數默認值

Golang使用空接口(interface{})類型來實現任意類型的默認值。用戶可以定義變量或者常量,將它們賦值給空接口類型參數

func Hello(name string, args ...interface{})string{
    greet := fmt.Sprintf("Hello,%s!\n", name)

    if len(args) == 0{
        return greet
    }

    greet += "I have some messages for you:\n"
    for _, arg := range args{
        greet += fmt.Sprintf("%v\n", arg)
    }
    return greet
}
func main() {
    fmt.Println(Hello("John")) // Hello, John!
    fmt.Println(Hello("Tom", "message one", 2)) // Hello, Tom!\nI have some messages for you:\nmessage one\n2\n
}

四、使用函數閉包實現默認值

可以使用函數閉包代替參數默認值。函數閉包是一個無需參數的函數,在被調用時返回另一個函數。

func Hello(name string)func(args ...interface{})string{
    return func(args ...interface{})string{
        greet := fmt.Sprintf("Hello,%s!\n", name)
        if len(args) == 0{
            return greet
        }
        greet += "I have some messages for you:\n"
        for _, arg := range args{
            greet += fmt.Sprintf("%v\n", arg)
        }
        return greet
    }
}
func main() {
    Tom := Hello("Tom")
    John := Hello("John")
    fmt.Println(Tom())  // Hello, Tom!
    fmt.Println(Tom("message 1", "message 2")) // Hello, Tom!\nI have some messages for you:\nmessage 1\nmessage 2\n
    fmt.Println(John()) // Hello, John!
}

五、結論

Golang默認參數是函數調用中提供默認值以覆蓋函數聲明中未給定值的參數,從而簡化某些情況下的函數調用。通常使用常數或變量實現符合接口的默認參數。還可以通過空接口類型實現任意類型的參數默認值,使用函數閉包代替參數默認值。

原創文章,作者:EDWXN,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/313695.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
EDWXN的頭像EDWXN
上一篇 2025-01-07 09:44
下一篇 2025-01-07 09:44

相關推薦

  • 三星內存條參數用法介紹

    本文將詳細解釋三星內存條上面的各種參數,讓你更好地了解內存條並選擇適合自己的一款。 一、容量大小 容量大小是內存條最基本的參數,一般以GB為單位表示,常見的有2GB、4GB、8GB…

    編程 2025-04-29
  • Python3定義函數參數類型

    Python是一門動態類型語言,不需要在定義變量時顯示的指定變量類型,但是Python3中提供了函數參數類型的聲明功能,在函數定義時明確定義參數類型。在函數的形參後面加上冒號(:)…

    編程 2025-04-29
  • 使用Golang調用Python

    在現代軟件開發中,多種編程語言的協作是相當普遍的。其中一種使用場景是Golang調用Python,這使得在使用Python庫的同時,可以利用Golang的高性能和強大並發能力。這篇…

    編程 2025-04-29
  • Spring Boot中發GET請求參數的處理

    本文將詳細介紹如何在Spring Boot中處理GET請求參數,並給出完整的代碼示例。 一、Spring Boot的GET請求參數基礎 在Spring Boot中,處理GET請求參…

    編程 2025-04-29
  • Python input參數變量用法介紹

    本文將從多個方面對Python input括號里參數變量進行闡述與詳解,並提供相應的代碼示例。 一、基本介紹 Python input()函數用於獲取用戶輸入。當程序運行到inpu…

    編程 2025-04-29
  • Hibernate日誌打印sql參數

    本文將從多個方面介紹如何在Hibernate中打印SQL參數。Hibernate作為一種ORM框架,可以通過打印SQL參數方便開發者調試和優化Hibernate應用。 一、通過配置…

    編程 2025-04-29
  • Python函數名稱相同參數不同:多態

    Python是一門面向對象的編程語言,它強烈支持多態性 一、什麼是多態多態是面向對象三大特性中的一種,它指的是:相同的函數名稱可以有不同的實現方式。也就是說,不同的對象調用同名方法…

    編程 2025-04-29
  • Python Class括號中的參數用法介紹

    本文將對Python中類的括號中的參數進行詳細解析,以幫助初學者熟悉和掌握類的創建以及參數設置。 一、Class的基本定義 在Python中,通過使用關鍵字class來定義類。類包…

    編程 2025-04-29
  • 全能編程開發工程師必知——DTD、XML、XSD以及DTD參數實體

    本文將從大體介紹DTD、XML以及XSD三大知識點,同時深入探究DTD參數實體的作用及實際應用場景。 一、DTD介紹 DTD是文檔類型定義(Document Type Defini…

    編程 2025-04-29
  • Python可變參數

    本文旨在對Python中可變參數進行詳細的探究和講解,包括可變參數的概念、實現方式、使用場景等多個方面,希望能夠對Python開發者有所幫助。 一、可變參數的概念 可變參數是指函數…

    編程 2025-04-29

發表回復

登錄後才能評論