【问题】
折腾:
【记录】go语言中实现http的POST且传递对应的post data
期间,需要把原先的getUrlRespHtml函数改为
添加postDict参数
且判断postDict是否为空,
去决定是GET还是POST。
所以希望实现:
函数的默认参数,或者是可选参数。
【折腾过程】
1.参考:
得到答案是:
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 |
我是觉得:
很有用。
转载请注明:在路上 » 【无法解决】go语言中实现函数的默认参数和可选参数