Not exactly.

Actually this syntax is already possible for methods:

func main() {
f := (*bytes.Buffer).String
b := bytes.NewBufferString("test")
fmt.Println(f(b))
}

I would like to extend it to struct fields.

And I want to be able to do it on types I didn't create/don't own.
That's why I don't want to declare a new method on the type (otherwise I 
could simply add a getter/setter).

Le vendredi 7 août 2026 à 22:25:36 UTC+2, Wendell Rios a écrit :

> 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/80ab01ec-a336-4e7d-ab22-500ad6584530n%40googlegroups.com.

Reply via email to