结构中的一个功能.为什么?

Luk*_*ski 3 go

在结构中定义函数的用例/优势是什么?

type demo struct {
    F func()
}
Run Code Online (Sandbox Code Playgroud)

Alb*_*221 6

我认为最好的答案就是一个例子.

Client.CheckRedirect参阅文档.

type Client struct {
    // (...)
    CheckRedirect func(req *Request, via []*Request) error
}
Run Code Online (Sandbox Code Playgroud)

只要http.Client有重定向响应,就会调用此函数.事实上,这个函数是一个公共属性,你可以在创建Client对象时或之后设置它,因此你可以在这种情况下定义自定义行为.

client := &http.Client{
    CheckRedirect: func(req *http.Request, via []*http.Request) error {
        return http.ErrUseLastResponse
    }
}
Run Code Online (Sandbox Code Playgroud)

函数属性只是自定义行为的代理(而不仅仅是!).

另一个例子是创建一个具有事件的对象.

type Example struct {
    EventHandler func(params []interface{})
}
Run Code Online (Sandbox Code Playgroud)

您可以通过设置Example.EventHandler属性来指定该事件的行为.