So, if I get this right, clear on map will result in map length equals to 
zero, but clear on slice is only a value-zeroing operation and the slice 
length remains unchanged? They seem like two different operations to me. I 
don't think that built-in clear function is necessary. It doesn't seem like 
the function has a good reason to be there.

On Wednesday, July 5, 2023 at 3:54:43 PM UTC+7 Tharaneedharan Vilwanathan 
wrote:

> Hi Axel,
>
> Okay, that helps! Thanks for the details.
>
> Regards
> dharani
>
>
> On Wed, Jul 5, 2023 at 1:38 AM Axel Wagner <axel.wa...@googlemail.com> 
> wrote:
>
>> Hi,
>>
>> this has come up on the issue as well. Robert Griesemer provided an 
>> explanation 
>> <https://github.com/golang/go/issues/56351#issuecomment-1601751291>:
>>
>> If the argument type (the type of the argument provided to clear) is a 
>>> type parameter (is of type parameter type), all types in its type set (in 
>>> the type set of the constraint corresponding to the type parameter) must be 
>>> maps or slices, and clear performs the operation corresponding to the 
>>> actual type argument (corresponding to the type of the actual type argument 
>>> with which the type parameter was instantiated).
>>
>>
>> That is, the sentence is about this situation:
>>
>> func Clear[T, any, S ~[]T](s S) {
>>     clear(s)
>> }
>> func main() {
>>     Clear(make([]int, 42))
>> }
>>
>> In this case, the type of s is S, which is a type parameter. So `clear` 
>> performs the operation corresponding to the type argument - in this example 
>> []int.
>>
>> The sentence is a bit confusing (I've seen this question come up four 
>> times now), so it probably should be clarified a bit.
>>
>> On Wed, Jul 5, 2023 at 9:06 AM Tharaneedharan Vilwanathan <
>> vdha...@gmail.com> wrote:
>>
>>> Hi All,
>>>
>>> Go 1.21 introduces a new clear() builtin function. I see this text in 
>>> https://tip.golang.org/ref/spec#Clear:
>>>
>>> clear(t) type parameter see below
>>>
>>> If the argument type is a type parameter 
>>> <https://tip.golang.org/ref/spec#Type_parameter_declarations>, all 
>>> types in its type set must be maps or slices, and clear performs the 
>>> operation corresponding to the actual type argument.
>>>
>>> I am not able to make sense of it. What does this mean? Any examples on 
>>> the usage?
>>>
>>> Appreciate your help.
>>>
>>> Thanks
>>> dharani
>>>
>>> -- 
>>> 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 golang-nuts...@googlegroups.com.
>>> To view this discussion on the web visit 
>>> https://groups.google.com/d/msgid/golang-nuts/CAN-HoCn99D-m71aJr3DRzCJvk_c7h8OhG2O4wPC-1Wd2ruEYNg%40mail.gmail.com
>>>  
>>> <https://groups.google.com/d/msgid/golang-nuts/CAN-HoCn99D-m71aJr3DRzCJvk_c7h8OhG2O4wPC-1Wd2ruEYNg%40mail.gmail.com?utm_medium=email&utm_source=footer>
>>> .
>>>
>>

-- 
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 golang-nuts+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/golang-nuts/00e424f1-1a62-4183-8974-9a585960ce7dn%40googlegroups.com.

Reply via email to