type golang float64 conversion cast go type-inference

conversion - golang float64



Go no puede inferir el tipo en la asignaciĆ³n: "sin nombre en el lado izquierdo de:=" (3)

Este fragmento funciona como se esperaba play.golang.org/p/VuCl-OKMav

i := 10 next := 11 prev, i := i, next

Sin embargo, este fragmento casi idéntico da non-name f.Bar on left side of := play.golang.org/p/J8NNWPugQG

type Foo struct { Bar int } f := Foo{10} next := 11 prev, f.Bar := f.Bar, next

¿Qué tiene de especial la estructura que detiene la inferencia tipo? ¿Es esto un error?



Es un problema abierto.

Issue 6842 : spec: Asignación a campos con notación de declaración corta


Desde la sección "Declaraciones de variables cortas" de la especificación:

"A diferencia de las declaraciones de variables regulares, una declaración de variable corta puede volver a declarar variables siempre que se declararon originalmente en el mismo bloque ... con el mismo tipo, y al menos una de las variables no en blanco es nueva".

Entonces, si declara la variable dentro de otro tipo (struct Foo en el ejemplo), se descalifica por "siempre que se declararan originalmente en el mismo bloque".

Entonces la respuesta es simplemente establecer la variable preestablecida igual - no usando la sintaxis: = al valor:

... var prev int prev, f.Bar = f.Bar, next ...