Hi Pierre, I believe that what you want already exists, albeit with a 
slight different syntax and type positioning: 

package main

import "fmt"

type MyType struct {
Foo int
}

func (m *MyType) f() *int {
return &m.Foo
}

func main() {
v := &MyType{Foo: 123}
i := v.f
fmt.Println(*i()) // Prints: 123
*(i()) = 456
fmt.Println(v.Foo) // Prints: 456
}


Em sexta-feira, 7 de agosto de 2026 às 14:08:20 UTC-3, Pierre Durand 
escreveu:

> Hello
>
> I just had an idea about struct field accessor function.
>
> type MyType struct {
> Foo int
> }
>
> Currently if we use `MyType.Foo`, it's a compile error: "type MyType has 
> no method Foo".
>
> My idea is to add syntactic sugar on this expression.
> It would be a function with 1 parameter (type of the struct), and 1 
> returned value (type is pointer to the field type).
> So we don't need to define a closure.
>
> It would allow to write this kind of code:
>
> func main() {
> type MyType struct {
> Foo int
> }
> f := MyType.Foo // Type is: func(MyType) *int
> v := MyType{Foo: 123}
> i := *f(v)
> fmt.Println(i) // Prints: 123
> *f(v) = 456
> fmt.Println(v.Foo) // Prints: 456
> }
>
> We should also allow to define it on a pointer: f := (*MyStruct).Foo
>
> I don't remember similar proposal (or maybe I didn't search properly).
> WDYT ?
> Would it be helpful ?
> Should I write a formal proposal ?
>

-- 
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 [email protected].
To view this discussion visit 
https://groups.google.com/d/msgid/golang-nuts/aa1c184f-d1f3-4a43-94aa-9c4f1cdd2f7an%40googlegroups.com.

Reply via email to