On Tue, Jan 24, 2023 at 7:15 PM nc <
nche...@gmail.com> wrote:
>
> Thanks! This is quite helpful information. I have one small followup question: when you use make([]type, len) and assign, if you were using a range loop, that would require an index variable right? In the case of ranging over a slice or array or string you could use the range's index variable, and in the case of a map you could declare an zero index var ahead of the block and increment it at the bottom of the loop? I think this sort of indexing would be necessary in order to perform the assignment. Perhaps I am being overly pedantic and I apologize if so; I just want to be really clear.
> On Tuesday, January 24, 2023 at 6:06:33 PM UTC-4 Ian Lance Taylor wrote:
>>
>> On Tue, Jan 24, 2023 at 12:01 PM nc <
nche...@gmail.com> wrote:
>> >
>> > I have some sample code here:
https://play.golang.com/p/H4kOGxamk0_D
>> >
>> > I have used a pattern in the above playground snippet (twice: once in uniqueValues() and once in keys()) that declares and initializes a slice like: s := make([]T, 0, knownLength) . Then it ranges over something containing knownLength elements and assigns them to s using append. The thing I like about this pattern is that I don't need an index variable in my range loop and I can just get away with using append(). I am trying to avoid the need to extend the array underlying s when calling append and more generally to do this initialization efficiently and with a minimum of code. This is also my first bit of code using generics.
>>
>> This technique, of make([]type, 0, len) followed by an append loop, is
>> a common one. Personally I always use that technique if the loop
>> statement is at all complicated, such as if it has any sort of if
>> statement. For very simple loops like the ones in your example I
>> might just use make([]type, len) and then assign, but using append is
>> also good. In my opinion.
>>
>>
>> > I'm also wondering a couple of other questions that are less important to me right now but that I would still very much appreciate having answered:
>> >
>> > 1. Is my use of generics reasonable here?
>>
>> Seems fine to me. Minor syntax point: you don't have to write "T
>> comparable, U comparable", you can write "T, U comparable".
>>
>> Ian
>
> 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