作者回复: 👍
作者回复: 好问题!👍 1. go规范中说: 只有可寻址的(addressable)的变量在调用*T作为receiver参数类型的方法时,Go才会施展“语法糖”,取其地址再调用对应的方法。关于addressable这个概念比较复杂,在专栏里不便展开,就没有提。var _ = IntSet{}.String() 中的IntSet()是一个中间值,是不可获得其地址的,因此不能被自动转换,因此编译器报错。 2. 调用方法的习惯没有标准😁
作者回复: 你的理解没错!这个在专栏前面的课程中也讲过,这里就是一个类型转换。通过类型转换,HandlerFunc可以让一个普通函数成为实现ServeHTTP方法的对象,从而满足http.Handler接口。
作者回复: 👍
作者回复: 👍
作者回复: 👍
作者回复: 我自己的学习之路,我还真没有“认真”总结过。手动允悲:)。
作者回复: 你说的没错。中间件(middleware)这个词的具体含义要结合具体上下文来看。
作者回复: Go编译器会对各个变量做逃逸分析(escape analysis),对于逃逸的变量,go编译器会将其分配在heap上,这样return 的p在函数NewError外面使用也是安全有效的。
作者回复: ✅