美文网首页
【Go - 函数 参数缺省/默认值】

【Go - 函数 参数缺省/默认值】

作者: wn777 | 来源:发表于2024-09-05 20:02 被阅读0次

Go现在与将来都不会支持参数默认值。Go始终在使得自己变得尽可能的简单,而增加这种额外的支持会使parser变得更复杂。

但是如果仍然需要,这里也有一些实现途径,

使用可变参数语法糖

package main

import "fmt"

// a is required, b is optional.
// Only the first value in b_optional will be used.
func Concat(a string, b_optional ...int) string {
    b := 0
    if len(b_optional) > 0 {
        b = b_optional[0]
    }

    return fmt.Sprintf("%s%d", a, b)
}

func main() {

    fmt.Println(Concat("Hello"))
    fmt.Println(Concat("Hello", 1))
    
}

这种算是比较常见的一种, 利用变长参数

b_optional 本质是个变长参数,对应一个切片,切片长度可能为0,也可能包含1个或者多个值。

利用结构体

package main

import (
    "fmt"
)

type Parameters struct {
    A string
    B string
}

func Concat(prm Parameters) string {
    // 变相给A 设置默认值
    if prm.A == "" {
        prm.A = "Hello"
    }

    return prm.A + ", " + prm.B
}
func main() {

    // fmt.Println(Concat("Hello"))
    p := Parameters{A: "Hello", B: "World"}
    fmt.Println(Concat(p))

    p1 := Parameters{A: "Hello"}
    fmt.Println(Concat(p1))

    p2 := Parameters{B: "World"}
    fmt.Println(Concat(p2))

    p3 := Parameters{}
    fmt.Println(Concat(p3))
}

利用结构体不强校验每个字段必须要存在,在函数开始时检查添加默认值

小结

整体上Go不太建议 默认或者缺省值,但是也有一定的方法来实现。

相关文章

  • 「python」 三个方面讲解函数的缺省参数

    所谓缺省参数,在定义函数时,可以给某个参数指定一个默认值,具有默认值的参数就叫做缺省参数。调用函数时,如果没有传入...

  • Python语法学习三之函数

    一、简单函数定义和调用 二、函数参数 2-1、缺省参数 调用函数时,缺省参数的值如果没有传入,则被认为是默认值。注...

  • 缺省参数( Default Arguments)

    缺省参数,就是在声明函数的某个参数的时候为之指定一个默认值,在调用该函数的时候如果采用该默认值,就无须再次指定该参...

  • 1.0 C++远征:函数参数默认值、函数重载、内联函数

    C++远征 [TOC] 一、函数参数默认值 1.函数参数默认值的声明 2.函数参数默认值的定义 3.函数参数默认值...

  • c++函数特性

    函数重载,参数默认值,内联函数 重载:函数名相同,参数列表不同,作用域相同。 参数默认值:参数默认值必须从最后开始...

  • ES6-函数参数的赋值

    函数参数的解构赋值: 函数参数解构赋值的默认值: 函数参数解构赋值的默认值undefined:

  • ES6 函数的扩展

    函数参数的默认值 ES6允许为函数的参数设置默认值,即直接写在参数定义的后面 函数参数默认值与解构赋值默认值结合使...

  • C++函数参数默认值

    函数参数默认值功能是指,当调用函数省略了实参时,函数将使用默认的参数值。 函数参数默认值有两个规定: 参数默认值需...

  • Go语言基础——函数

    Go函数的特性 不支持:嵌套、函数重载、默认值参数支持:可变变参、多返回值、命名返回值参数、匿名函数、闭包特别注意...

  • ES6--函数扩展

    函数新增特性 函数默认值,rest参数,扩展运算符,箭头函数,this绑定,尾调用 函数参数的默认值 rest参数...

网友评论

      本文标题:【Go - 函数 参数缺省/默认值】

      本文链接:https://www.haomeiwen.com/subject/chldljtx.html