On Thursday, September 29, 2016 at 1:33:40 PM UTC+8, Micky wrote:
>
> TL, the simplest reason is this: 
>
> You can live without the "ok idiom" when retrieving a map value but you 
> cannot when type asserting. Think of the consequences for rest of your 
> program, if you forgot to check the status of assertion that is failed (but 
> you didn't know) because the compiler didn't panic! It would be a travesty.
>
> For compiler's perspective, see Andrey's response.
>

But I don't check the status of an assertion and the the status is false, I 
surely expect to get a zero value of the wrong type in the assertion.
 

>
> On Thu, Sep 29, 2016 at 10:06 AM, Henrik Johansson <dahan...@gmail.com 
> <javascript:>> wrote:
>
>> I am not sure but perhaps as simple as it is a very natural and known 
>> behavior of maps and to make it work syntactically as the type assertion 
>> would make it weird. 
>>
>> On Thu, Sep 29, 2016, 07:02 T L <tapi...@gmail.com <javascript:>> wrote:
>>
>>>
>>>
>>> On Thursday, September 29, 2016 at 12:56:57 PM UTC+8, Micky wrote:
>>>>
>>>> The reason is directly stated in the Go language spec:
>>>>
>>>> "If the type assertion holds, the value of the expression is the value 
>>>> stored in x and its type is T. If the type assertion is false, a run-time 
>>>> panic <https://golang.org/ref/spec#Run_time_panics> occurs."
>>>>
>>>> Here "hold" means if it succeeds.
>>>>
>>>>
>>> I know of the syntax in spec. 
>>> I just want to understand what is the deep reason for the syntax 
>>> inconsistency between map index and type assert.
>>>  
>>>
>>>>
>>>> On Thu, Sep 29, 2016 at 9:53 AM, T L <tapi...@gmail.com> wrote:
>>>>
>>>>>
>>>>>
>>>>> On Thursday, September 29, 2016 at 12:32:48 PM UTC+8, Henrik Johansson 
>>>>> wrote:
>>>>>>
>>>>>> This is just how type assertion works. 
>>>>>> If you don't use the dual return it panics if the actual type is 
>>>>>> different from the one you try to assert. 
>>>>>>
>>>>>
>>>>> but what is the underlining reason for the inconsistency between map 
>>>>> index and type assert?
>>>>>  
>>>>>
>>>>>>
>>>>>> On Thu, Sep 29, 2016, 05:26 T L <tapi...@gmail.com> wrote:
>>>>>>
>>>>>>> package main
>>>>>>>
>>>>>>> func main() {
>>>>>>>     var m = map[string]int{}
>>>>>>>     _, _ = m["abc"] // ok
>>>>>>>     _ = m["abc"] // ok
>>>>>>>     
>>>>>>>     var i interface{} = 789
>>>>>>>     _, _ = i.(bool) // ok
>>>>>>>     _ = i.(bool) // panic: interface conversion: interface is int, 
>>>>>>> not bool
>>>>>>> }
>>>>>>>
>>>>>>> -- 
>>>>>>> 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...@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...@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...@googlegroups.com <javascript:>.
>>> 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...@googlegroups.com <javascript:>.
>> 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