Henry, thanks for elucidating the difference between defining a new type 
and creating a type alias.
I admit I'm really just a C "user", and never a professional C programmer. 
I guess the same applies to my usage of Go, too.
Thanks again for this extremely educating discussion.

On Saturday, December 20, 2025 at 3:09:56 PM UTC+8 Henry wrote:

> Happy to help. If you’re coming from C, Go’s "type Symbol = byte" is 
> directly equivalent to C’s "typedef unsigned char Symbol". It does *not* 
> create a new type; it’s purely a type alias.
>
> By contrast, "type Symbol byte" defines a *new* and distinct type.
>
> On Saturday, December 20, 2025 at 1:47:25 PM UTC+7 [email protected] 
> wrote:
>
>> Hi Axel
>>
>> Thanks for the two improvements above that enhances the safety of the 
>> `unsafe` approach.
>> Fortunately, the `type T = U` captures my intention sufficiently, and the 
>> main motivation for posting this discussion was to solicit suggestions to 
>> help me remove my uses of `unsafe`. (to this end this post has fulfilled 
>> its mission, and many thanks for everyone chiming in : ) )
>>
>> Perhaps the Go team has indeed made the correct decision in rejected 
>> issue 71183, and it is really my problem coming from a C background.
>> I was perhaps too glued to C's type alias syntax `type T U`, and haven't 
>> truly internalized Go's way of doing things.
>> Nonetheless, I believe raising awareness to the `type T = U` trick is 
>> indeed necessary, as the decade old way of doing this conversion has always 
>> been `unsafe`.
>> In fact, the situation has now deteriorated to point where both Chatgpt 
>> and Gemini are now parroting the `unsafe` way of doing things.
>>
>> p.s. Axel, sorry for mistyping your name in my previous post, I strive to 
>> spell it correctly in the future
>> On Saturday, December 20, 2025 at 2:34:00 PM UTC+8 Axel Wagner wrote:
>>
>>> > I believe at least for most cases, Henry's approach above is the 
>>> correct solution, and this truly needs to be documented somewhere for 
>>> further reference.
>>>
>>> I thought about suggesting that, but I was assuming you where using a 
>>> type definition because you wanted the types to be different (e.g. to put 
>>> methods on it, or just for safety).
>>>
>>

-- 
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].
To view this discussion visit 
https://groups.google.com/d/msgid/golang-nuts/4ebc17e7-a83a-4010-a496-d1d2636bf42fn%40googlegroups.com.

Reply via email to