![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
golang面向对象
磨镜台
牢骚太盛防肠断,风物长宜放眼量。
展开
-
sort接口
sort包提供了针对任意序列根据任意排序函数原地排序的功能。type Interface interface { Len() int //序列长度 Less(i, j int) bool //比较两个元素的含义 Swap(i, j int) //如何交换两个元素}例子,根据长度将字符串分片排序:type Strs []string//计算长度fu...原创 2018-08-03 18:06:13 · 434 阅读 · 0 评论 -
面向抽象层依赖倒转
依赖倒转原则设计系统时将模块分为3个层次,抽象层、实现层、业务逻辑层。那么,我们⾸先将抽象层的模块和接⼝定义出来,这⾥就需要了interface 接⼝的设计,然后我们依照抽象层,依次实现每个实现层的模块,在我们写实现层代码的时候,实际上我们只需要参考对应的抽象层实现就好了,实现每个模块,也和其他的实现的模块没有关系,这样也符合了上⾯介绍的开闭原则。这样实现起来每个模块只依赖对象的接⼝,⽽和其...原创 2019-05-22 21:11:11 · 154 阅读 · 0 评论 -
通过结构体内嵌组成类型
内嵌一个T类型,那么T的方法都被纳入。 内嵌允许构成复杂的类型,该类型由许多字段构成,每个字段提供一些方法。type WOW struct { int string}func (w WOW) String() string { return "我是一代WOW的方法"}type WOW2 struct { name string WOW}...原创 2018-08-04 11:22:03 · 216 阅读 · 0 评论 -
指针接收者的方法
由于主调函数会复制每一个实参变量,如果要更新变量或避免复制,我们需要指针传递。同样适合于更新接收者。type WOW struct { int string}//这里只是复制了w,没有复制w的指针func (w WOW) f() { w.int = 100 w.string = "a"}func main() { w := WOW{2, "...原创 2018-08-02 16:52:47 · 279 阅读 · 0 评论 -
方法声明、方法变量和方法表达式
方法声明: 方法声明和普通函数声明类似,只是在函数名字前多了一个参数。这个参数把这个方法绑定到参数对应的类型上。type Point struct { x, y float64}func (p Point) Distance(q Point) float64 { return math.Hypot(q.x-p.y, q.y-p.y)}方法变量: 函数只需要提供实参而不需要提...原创 2018-08-02 16:07:50 · 1821 阅读 · 0 评论 -
封装,多态
封装: Go语言只有一种方式控制命名的可见性(可访问属性):首字母大写的标识符是可以从包中导出的。 所以要封装一个对象,必须使用结构体。继承: @——@ 多态: ×——×...原创 2018-08-02 15:29:58 · 85 阅读 · 0 评论 -
类型断言(接口查询)
询问接口的对象是否是某个类型:type sg struct { str string}func (s *sg) String() string { return s.str}s := new(sg)s.str = "hello"var v interface{} = ss1, ok := v.(fmt.Stringer) //接口v是否实现了fmt....原创 2018-08-04 18:37:12 · 645 阅读 · 0 评论 -
flag.Value接口
flag.Value接口来帮助我们定义命令行标志package flagtype Value interface { String() string Set(string) error //解析传入的字符串并更新标志值}flag.CommandLine全局变量处理标志值:type OM struct { n1 string}func (om *...原创 2018-08-04 12:25:34 · 838 阅读 · 0 评论 -
handler接口
实现handler接口,用来处理请求。type Handler interface { ServerHTTP(w ResponseWriter, r *Request)}例如,显示一个电子商务网站的库存:type dollars float32func (d dollars) String() string { return fmt.Sprintf("$%...原创 2018-08-03 18:52:01 · 1826 阅读 · 0 评论 -
开闭原则
开闭原则当我们给系统添加一个功能,不是通过修改代码,而是通过增添代码来完成关于接口接口的最大的意义就是实现多态的思想,就是我们可以根据interface类型来设计API接口,那么这种API接口的适应能力不仅能适应当下所实现的全部模块,也适应未来实现的模块来进行调用。...原创 2019-05-22 21:34:11 · 89 阅读 · 0 评论