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.