On Tue, Jan 31, 2017 at 10:26 PM,  <landi...@gmail.com> wrote:
> It would know at string creation time because strings in go are immutable.
> Really these are two types, with duck typing between them. (the programmer
> unless using unsafe or reflection sees them the same)
> You have a shortstring type and a string type, what determines their type is
> the length of the string.
> If it is a shortstring type then it is a regular struct with no pointers, if
> it is a string type then it would have a pointer.

The point of this scheme is presumably to pass the values to some
other function that takes arguments of type `string`, such as
`strings.Split` or whatever.  At that point the distinction you are
talking about is lost.

Ian


> On Tuesday, January 31, 2017 at 11:15:54 PM UTC-6, Ian Lance Taylor wrote:
>>
>> On Tue, Jan 31, 2017 at 9:10 PM, Eliot Hedeman
>> <eliot.d...@gmail.com> wrote:
>> > I was writing up a proposal about adding the small string
>> > optimization(putting strings on the heap if they will fit within the
>> > sringStruct)to the go runtime, and I realized there might be good reason
>> > why
>> > this has not been done yet. Are there any glaring reasons you can think
>> > of?
>> > Here is the really rough draft of the proposal. Thanks for the feedback!
>>
>> The problem is that the concurrent garbage collector needs to be able
>> to determine reliably and safely whether a word in memory, including
>> on the stack, contains a pointer or not.  It's not OK to have a word
>> in memory that might or might contain a pointer.  It's a good thing
>> that Go doesn't have unions in the language, because they would be
>> very difficult to implement in the garbage collector.
>>
>> 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 golang-nuts+unsubscr...@googlegroups.com.
> 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 golang-nuts+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to