关于界面的极简问题

huangapple go评论81阅读模式
英文:

Extreme noob query about interface

问题

关于这段代码的解释如下:

(*http.ResponseWriter)(nil) 是类型断言的一种形式。它将 nil 转换为 http.ResponseWriter 类型的指针。

接口可以包含指针类型。在 Go 语言中,接口是一种抽象类型,可以用于表示其他类型的集合。这意味着接口可以接受指向实现该接口的类型的指针。

希望对你有帮助!

英文:

With reference to this code

How to interpret this code?

<code> (*http.ResponseWriter)(nil) </code>

Is it type assertion or something else? I dont understand.

Also can interfaces have pointers?

Thanks

答案1

得分: 1

这是一个nil指针。

nil指针有一个类型,在这种情况下是*http.ResponseWriter

编辑以回答评论部分的问题:

这样做的原因是inject(Martini的依赖注入器)通过MapTo将接口类型映射到该接口的实现。

由于它只对接口的_类型_(作为第二个参数)感兴趣,所以一个nil指针就足够了。

英文:

It's a nil pointer.

nil pointers have a type, in this case it's *http.ResponseWriter.

Edit to answer question in comment section:

The reason for doing this is that inject (Martini's dependency injector) maps an interface type to an implementation of that interface through MapTo.

As it's really only interested in the interface's type (as second argument), a nil pointer is enough.

huangapple
  • 本文由 发表于 2013年11月17日 09:23:06
  • 转载请务必保留本文链接:https://go.coder-hub.com/20026062.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定