Jan,

The untyped constant 1 assumes the type of x, which is float64. With 
explicit types:

package main

import "fmt"

func main() {
    var a int = 0
    // invalid operation: float64(1) << a (shift of type float64)
    var x float64 = float64(1) << a
    fmt.Println(x)
}

https://play.golang.org/p/jQ4k5qrxcTu

Peter

On Thursday, June 3, 2021 at 5:52:23 AM UTC-4 Jan Mercl wrote:

> On Thu, Jun 3, 2021 at 11:21 AM Brian Candler <b.ca...@pobox.com> wrote:
> >
> > Weird. It simplifies to this: https://play.golang.org/p/OsOhRMC6kBu
>
> I think this case is WAI.
>
> From https://golang.org/ref/spec#Operators
>
> " If the left operand of a non-constant shift expression is an untyped
> constant, it is first implicitly converted to the type it would assume
> if the shift expression were replaced by its left operand alone."
>
> The OP case is strange in that the constness of the RHS operator
> somehow changes the interpretation of the above quotation
> specification, but I cannot find that it should.
>

-- 
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.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/golang-nuts/b8061835-44fb-4bcf-9017-d2c9a6b58608n%40googlegroups.com.

Reply via email to