ahoj, připadá mě, že jsem asi narazil na chybu v Golangu, nebo možná jsem jen příliš "rozežranej" co se týče toho, co po něm chci
package main
type SampleStruct struct {
SampleField int
}
var s SampleStruct
func returnIntErr() (int, error) {
return 42, nil
}
func main() {
// $ go run gostructerr.go
// # command-line-arguments
// gostructerr.go:15:5: non-name s.SampleField on left side of :=
//!
//s.SampleField, err := returnIntErr()
var err error
s.SampleField, err = returnIntErr()
println(err)
}
ten řádek za tím //! se nezkompiluje (když ho odkomentujete), imho by měl přiřadit do s.SampleField a zároveň vytvořit/deklarovat proměnnou err. takhle to vypadá, že ":=" umí, kromě vytváření nových proměnných, přiřazovat jen do proměnných a ne do položek struktur, což mi přijde neortogonální, workaround, který se přeloží, následuje
je to očesaný reproducer z reálného projektu, kde jsem si rval vlasy, proč to nefunguje: ještě jsem to postnul do interních pracovních fór a na okouna a zítra uvidím, kdo mi co kde řekne