我是Golang的新手,我偶尔会看到一些代码在函数类型中包含一个函数.在http包中我们也有这个:
type HandlerFunc func(ResponseWriter, *Request)
func (f HandlerFunc) ServeHTTP(w ResponseWriter, r *Request) {
f(w, r)
}
Run Code Online (Sandbox Code Playgroud)
我很想知道背后的原因.如果我们想要一个暴露方法的类型,为什么我们不创建一个结构类型并将方法添加到它?
如果你是在中间件既能接收的context,也许追加一些数据,以context将其发送到下一个拦截器,然后将两种方法,即metadata.FromOutgoingContext和metadata.FromIncomingContext应叫什么名字?
我想在Ruby中为String类添加一个自定义方法.我知道可以使用以下代码完成:
class String
def my_own_method
# impelementation comes here
end
end
Run Code Online (Sandbox Code Playgroud)
如果我将该代码写入文件中说"string.rb"和其他地方,即irb,我写的require "string"话它工作得很好,我可以在任何字符串对象上访问该自定义方法.但是,当我想将自定义代码打包到这样的模块中时会出现问题:
module A
class String
def my_own_method
# implementation
end
end
end
Run Code Online (Sandbox Code Playgroud)
然后,当我包含模块(没有错误)时,我无法访问每个字符串对象上的方法,除非我通过调用直接实例化字符串,比如说s = A::String.new.在这种情况下,我可以访问我的自定义方法,但只能访问不在任何字符串对象上的s变量.我该怎样做才能打包我的util类并自动将它们的方法添加到基类中?任何帮助都非常感谢.