在结构中定义函数的用例/优势是什么?
type demo struct {
F func()
}
Run Code Online (Sandbox Code Playgroud)
我认为最好的答案就是一个例子.
请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属性来指定该事件的行为.