On Saturday, August 6, 2016 at 11:53:42 AM UTC+2, T L wrote:
>
>
>
> On Saturday, August 6, 2016 at 5:45:50 PM UTC+8, atd...@gmail.com wrote:
>>
>> No, I'm saying that the current implementation is two pointers.
>> The value is addressed by the second pointer. So you cannot really put a 
>> const in an interface. (thought experiment)
>>
>> Of course, in the specific case of boxing a value type, that could work. 
>> If you accept that the *typ never changes throughout the program.
>>
>
> for constant intrfaces, the *typ property is not needed. Calling of their 
> methods will confirmed at compile time.
>
 
You need it, the interface cannot be of any type, it would need to be 
initialized with a value of a given type for method dispatch.
The only thing is that the method dispatch would be fixed. (again a thought 
experiment :)

That's similar to sync.Value ( https://golang.org/pkg/sync/atomic/#Value)
 

>  
>
>>
>> The question is, why a special case, what would you use it for? 
>> sync.Pools ?
>>
>> If it's just for error variables to be constants, maybe it is not worth 
>> it. What problem does it solve ?
>>
>
> for safety.
>

What is trhe safety issue? Do you have an example at hand? 

>  
>
>>
>> On Saturday, August 6, 2016 at 11:11:24 AM UTC+2, T L wrote:
>>>
>>>
>>>
>>> On Saturday, August 6, 2016 at 4:06:07 PM UTC+8, atd...@gmail.com wrote:
>>>>
>>>> Possibily, if you freeze the type of things that can be boxed by the 
>>>> interface. But what would it be useful for ?
>>>> That would just mean that an interface is constant. Not even that the 
>>>> value it wraps can't be changed (because with the current implementation, 
>>>> the values an interface wraps need to be addressable).
>>>>
>>>
>>> you mean a value should be addressable to let an interface wraps wrap it?
>>> Not true, "_ = interface{}(1)" is valid in current implementation.
>>>  
>>>
>>>>
>>>>
>>>>
>>>> On Saturday, August 6, 2016 at 9:53:26 AM UTC+2, T L wrote:
>>>>>
>>>>> Is it possible to make an interface constant if its concrete value 
>>>>> type is bool/number/string?
>>>>>
>>>>> On Saturday, August 6, 2016 at 3:48:17 AM UTC+8, Ian Lance Taylor 
>>>>> wrote:
>>>>>>
>>>>>> On Fri, Aug 5, 2016 at 11:21 AM, T L <tapi...@gmail.com> wrote: 
>>>>>> > 
>>>>>> > For an interface value, its internal values will never change. 
>>>>>> > Are there any problems if golang supports constant interface 
>>>>>> values? 
>>>>>>
>>>>>> Pedantically, in Go, constants are untyped by default.  It doesn't 
>>>>>> make sense to speak of an untyped interface value.  I would describe 
>>>>>> what you are asking for as an immutable variable.  I've often thought 
>>>>>> that immutable variables would be useful in Go, but since they have 
>>>>>> to 
>>>>>> be initialized it's not that simple.  For example, io.EOF is 
>>>>>> initialized using a function call.  That means that it can't actually 
>>>>>> be in read-only memory, and of course it's possible to take it's 
>>>>>> address.  How do we prevent it from being changed, without 
>>>>>> introducing 
>>>>>> an immutable qualifier into the type system?  It's a complex problem 
>>>>>> for which I have no solution.  And the benefits of an immutable 
>>>>>> variable aren't all that high. 
>>>>>>
>>>>>> 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.

Reply via email to