It appears you are right, thanks for the answer.

On Thursday, October 13, 2016 at 9:25:07 PM UTC-7, Chris Manghane wrote:
>
> In the Go Language specification under operators (
> https://golang.org/ref/spec#Operators), there are a couple examples that 
> demonstrate this exact situation:
>
> var u2 = 1<<s != 1.0   // illegal: 1 has type float64, cannot shift
> var v float32 = 1<<s   // illegal: 1 has type float32, cannot shift
>
> The corresponding rule behind this is:
>
> If the left operand of a non-constant shift expression is an untyped 
> constant, it is first converted to the type it would assume if the shift 
> expression were replaced by its left operand alone.
> So in your baz() example, because 1 is an untyped constant, the shift 
> expression acts as if 1 is the only operand and converts it to a float64 
> type; therefore, 1 has type float64 and you cannot shift. To get around 
> this, just use an explicitly typed constant.
>
> On Thu, Oct 13, 2016 at 7:37 PM, Carl Mastrangelo <carl.mas...@gmail.com 
> <javascript:>> wrote:
>
>> https://play.golang.org/p/iZTogUaWWl
>>
>> In the program above, foo and bar compile but baz does not.  It fails 
>> with the message: "invalid operation: 1 << b (shift of type float64)".  
>> This seems to be wrong on the surface, since the order of operations should 
>> imply the shift takes precedence.  In the bar function, using a temporary 
>> variable without specifying the type shows that the compiler does know what 
>> to do.   What am I missing?
>>
>> -- 
>> 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