在go中结构中定义函数的用例/优点是什么?
type demo struct {
F func()
}
答案 0 :(得分:6)
我认为最好的答案就是一个例子。
请查看文档中的Client.CheckRedirect
。
type Client struct {
// (...)
CheckRedirect func(req *Request, via []*Request) error
}
只要http.Client
有重定向响应,就会调用此函数。事实上,这个函数是一个公共属性,你可以在创建Client
对象时或之后设置它,因此你可以在这种情况下定义自定义行为。
client := &http.Client{
CheckRedirect: func(req *http.Request, via []*http.Request) error {
return http.ErrUseLastResponse
}
}
函数属性只是自定义行为的委托(而不仅仅是!)。
另一个例子是创建一个有事件的对象。
type Example struct {
EventHandler func(params []interface{})
}
您可以通过设置Example.EventHandler
属性来指定该事件的行为。
答案 1 :(得分:-1)
它允许您自定义类型的功能,而不是来自该类型。