初级会员
  • 第 58587 位会员
  • robertchen
  • 2020-12-10 16:25:50
  • Offline
  • 78 21

最近发布的主题

    暂无

最近发布的文章

    暂无

最近分享的资源

    暂无

最近发布的项目

    暂无

最近的评论

  • 评论了面试题 Go每日一题(52)
    不要在golang里面谈父类子类和继承。类比都不要类比。纯属误导人!!! golang没有类与继承。有接口,内嵌,组合。 与面向对象的类对应的概念。不是struct,是interface!! 那些觉得struct对应类的。我问你,是不是觉得只有struct才能有方法? 事实上golang里面任何类型都可以有方法。接收器的类型远不止是struct。甚至连int都可以是接收器。
  • 评论了主题 read only in golang
    不可导出+Get函数。非常好解决
  • 评论了面试题 Go每日一题(32)
    ref: http://books.studygolang.com/gopl-zh/ch6/ch6-03.html
  • 评论了面试题 Go每日一题(30)
    首先, golang没有父类和子类的概念, 任何interface类型不是任何结构的所谓"父类". 其次, interface只认哪个类型是接收器, 类型和类型指针是两个类型, 分到两个接收器. 我觉得https://books.studygolang.com/gopl-zh/ch6/ch6.html 和 https://books.studygolang.com/gopl-zh/ch7/ch7.html 这两章已经把很多东西都讲清楚了.
  • 评论了面试题 Go每日一题(30)
    我觉得强制用java等基于类的面向对象的思维解释golang是很奇怪且不正确的. 对于这个问题, 我觉得编译器的报错已经很清晰地回答了: ``` Student does not implement People (Speak method has pointer receiver) ``` 也就是说, `Student`不是`People`类型, 但是`*Student`是. 就这么简单. 只是当写下 ```go peo := Student{} peo.Speak("hello") ``` 时,编译器会隐式替换为`(&peo).Speak("Hello")`而已, 给人以`Student`也有`func Speak(string) string`方法的**错觉**. ref: https://books.studygolang.com/gopl-zh/ch6/ch6-02.html p.s. ```go ... func main() { var p2 interface{} = Student{} var p3 interface{} = &Student{} if _, ok := p2.(People); ok { fmt.Println("p2 is of type People") } else if _, ok := p3.(People); ok { fmt.Println("p3 is of type People") } } ``` output: ``` p3 is of type People ```