【无法解决】go语言中实现函数的默认参数和可选参数

【问题】

折腾:

【记录】go语言中实现http的POST且传递对应的post data

期间,需要把原先的getUrlRespHtml函数改为

添加postDict参数

且判断postDict是否为空,

去决定是GET还是POST。

所以希望实现:

函数的默认参数,或者是可选参数。

【折腾过程】

1.参考:

Optional Parameters?

得到答案是:

go根本就不支持函数重载,不支持可选参数。

2.但是可以去试试,那人说的,通过type实现类似效果。

3.但是看了这个讨论:

Optional (or default) function arguments

也同意:

只有para:=value

的写法,是最合理的。

其他都是不太好的。

4.那就去试试,默认参数值的写法:

func getUrlRespHtml(url string, postDict map = nil) string{

看看是否支持:

结果是不支持:

E:\Dev_Root\go\src\EmulateLoginBaidu>go run EmulateLoginBaidu.go
# command-line-arguments
.\EmulateLoginBaidu.go:124: syntax error: unexpected =, expecting [
.\EmulateLoginBaidu.go:132: non-declaration statement outside function body
.\EmulateLoginBaidu.go:137: non-declaration statement outside function body
.\EmulateLoginBaidu.go:140: non-declaration statement outside function body
.\EmulateLoginBaidu.go:147: non-declaration statement outside function body
.\EmulateLoginBaidu.go:148: non-declaration statement outside function body
.\EmulateLoginBaidu.go:149: non-declaration statement outside function body
.\EmulateLoginBaidu.go:151: non-declaration statement outside function body
.\EmulateLoginBaidu.go:154: non-declaration statement outside function body
.\EmulateLoginBaidu.go:158: non-declaration statement outside function body
.\EmulateLoginBaidu.go:158: too many errors

5.利用struct的去间接实现默认参数和可选参数的话,还是很不方便。

算了,不用了。

 

【总结】

go语言,暂时不支持,且以后也不打算支持,函数的默认参数,可选参数。

从这点上来说:

我觉得go还是很挫的。。。

 

附上官网的解释:

Why does Go not support overloading of methods and operators?

但是我个人不认同这句:

but different signatures was occasionally useful

我是觉得:

很有用。



One Thought on “【无法解决】go语言中实现函数的默认参数和可选参数

  1. 不懂就瞎写,都懒得评论。

发表评论

电子邮件地址不会被公开。 必填项已用*标注

无觅相关文章插件,快速提升流量