On Thu, Jul 6, 2023 at 7:49 AM Henry <henry.adisuma...@gmail.com> wrote:
> 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? That understanding is correct. > 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. > There is one thing that `clear` allows which is impossible without it and that's removing irreflexive keys (those that contain floating point types/elements/fields which are NaN) from a map. Whether that's a "good" reason is up for debate, of course. There has been quite a bit of that in the issue already: https://github.com/golang/go/issues/56351 > > 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 > <https://groups.google.com/d/msgid/golang-nuts/00e424f1-1a62-4183-8974-9a585960ce7dn%40googlegroups.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/CAEkBMfFZNkUQkJTnjwNjnPyHKd0hy%2BH%2BTg1L3wBLyG2WjUj5Tw%40mail.gmail.com.