I don't think the benefits are obvious and being able to leave out
parameters by specifying one by name is of dubious benefit. Could you not
simply write a short set of if statements that insert a default by using a
nulled sentinel. Like this:
func PrintMessage(s string) {
if s == "" {
s = "default value"
}
DoSomeThing(s)
}
Then call it
PrintMessage("")
On Friday, 24 August 2018 01:38:36 UTC+2, Masoud Ghorbani wrote:
>
> You're right but I think developers of Go can think about that because its
> benefits are obvious.
>
> On Friday, August 24, 2018 at 1:23:32 AM UTC+4:30, Axel Wagner wrote:
>>
>> On Thu, Aug 23, 2018 at 9:44 AM Masoud Ghorbani <[email protected]>
>> wrote:
>>
>>> Your opinion is like to say all of the python application should rethink
>>> and re-write their structure because they used default values.
>>>
>>
>> One general thing to observe in all these discussions is, that Go is not
>> Python (or Rust, Haskell, C#,…). Different languages have different goals,
>> weigh them differently and choose different solutions to get there - and
>> that's okay. Saying something isn't right for Go isn't the same as saying
>> something isn't right for a different language. In the same way, saying
>> some other language is doing something is not a convincing argument that Go
>> should do it too.
>>
>>
>>> I think having default values for parameters is just a feature which
>>> will make codebase readable and smaller than before.
>>>
>>> On Thursday, August 23, 2018 at 4:38:23 AM UTC+4:30, Louki Sumirniy
>>> wrote:
>>>>
>>>> There is a default value for everything in Go. Null. 0, "" and nil. As
>>>> someone else said, if you want a parameter to be optional you probably
>>>> need
>>>> ...interface{} and then infer no parameter as 'use the default'. Going a
>>>> little further, you can build default values into a constructor function
>>>> for an interfaced type.
>>>>
>>>> Oh, probably the neatest solution is to make a struct that lets you
>>>> input the parameters either in-order or with labels instead. Then you can
>>>> use &TypeName{} to mean 'use defaults' or whichever parameters are not
>>>> specified get automatically set to default, either unlabeled and ordered
>>>> such that the values that will be asserted to defaults are not the first
>>>> ones in a struct literal used to feed parameters in. Or make the names
>>>> nice
>>>> and concise so they aren't troublesome to add (and if your code is going
>>>> to
>>>> often use defaults, probably you won't even have to specify many values
>>>> very often anyway).
>>>>
>>>> Assertions and labeled parameters are nice features but they don't
>>>> really save you that much time. I would suggest that it's more likely you
>>>> need to rethink the structure of your application and make slightly
>>>> different named parameters for those calls that will use defaults for
>>>> specific parameters.
>>>>
>>>> Another thing is that you can make null variables imply the use of
>>>> defaults, then you only need to put 'nil' '""' or '0' into these
>>>> parameters
>>>> and the code will test and fill them automatically. Or if null isn't
>>>> handy,
>>>> you can define sentinel values for a type that indicate 'use defaults'.
>>>>
>>>> On Wednesday, 22 August 2018 14:39:37 UTC+2, Masoud Ghorbani wrote:
>>>>>
>>>>> Why there isn't function argument default value in Golang explicitly
>>>>> like Typescript and Python?
>>>>>
>>>> --
>>> You received this message because you are subscribed to the Google
>>> Groups "golang-nuts" group.
>>> To unsubscribe from this group and stop receiving emails from it, send
>>> an email to [email protected].
>>> For more options, visit https://groups.google.com/d/optout.
>>>
>>
--
You received this message because you are subscribed to the Google Groups
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.