为了账号安全,请及时绑定邮箱和手机立即绑定

Go中函数重载的替代方法?

Go中函数重载的替代方法?

Go
富国沪深 2021-05-10 05:13:30
是否可以使用Golang以类似的方式工作,例如函数重载或C#中的可选参数?还是另一种方式?
查看完整描述

3 回答

?
郎朗坤

TA贡献1921条经验 获得超9个赞

Go中可选参数的惯用答案是包装函数:


func do(a, b, c int) {

    // ...

}


func doSimply(a, b) {

    do(a, b, 42)

}

有意避免了函数重载,因为它使代码难以阅读。


查看完整回答
反对 回复 2021-05-17
?
饮歌长啸

TA贡献1951条经验 获得超3个赞

有一些提示,这里使用可变参数,例如:


sm1 := Sum(1, 2, 3, 4) // = 1 + 2 + 3 + 4 = 10

sm2 := Sum(1, 2) // = 1 + 2 = 3

sm3 := Sum(7, 1, -2, 0, 18) // = 7 + 1 + -2 + 0 + 18 = 24

sm4 := Sum() // = 0


func Sum(numbers ...int) int {    

    n := 0    

    for _,number := range numbers {

        n += number

    }    

    return n

}

或...interface{}任何类型:


Ul("apple", 7.2, "BANANA", 5, "cHeRy")


func Ul(things ...interface{}) {

  fmt.Println("<ul>")    

  for _,it := range things {

    fmt.Printf("    <li>%v</li>\n", it)

  }    

  fmt.Println("</ul>")

}


查看完整回答
反对 回复 2021-05-17
  • 3 回答
  • 0 关注
  • 232 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信