Go 语言的面向对象使用场景

2018-06-13 18:42:25 1529 0 技术文章

目前大部分高级语言都支持面向对象,比如 C++, JAVA, PHP 等,那么 Go 语言的面向对象怎么使用? 下面我们从面向对象的三个基本特性说起:封装、继承和多态。

封装,就是指运行的数据和函数绑定在一起,C++ 中主要是通过 this 指针来完成的; 继承,就是指 class 之间可以相互继承属性和函数; 多态,主要就是用统一的接口来处理通用的逻辑,每个 class 只需要按照接口实现自己的回调函数就可以了。

封装

package main

import "fmt"
 
type data struct {
    val int
}

func (p_data* data)set(num int) {
    p_data.val = num
}

func (p_data* data)show() {
    fmt.Println(p_data.val)
}

func main() {
    p_data := &data{4}
    p_data.set(5)
    p_data.show()
}

继承

package main
 
import "fmt"
 
type parent struct {
    val int
}
 
type child struct {
    parent
    num int
}
 
 
func main() {
    var c child
 
    c = child{parent{1}, 2}
    fmt.Println(c.num)
    fmt.Println(c.val)
}

多态

package main

import "fmt"

type act interface {
    write()
}
 
type xiaoming struct {
}

type xiaofang struct {
}

func (xm *xiaoming) write() {
    fmt.Println("xiaoming write")
}
 
func (xf *xiaofang) write() {
    fmt.Println("xiaofang write")
}

func main() {
    var w act;

    xm := xiaoming{}
    xf := xiaofang{}

    w = &xm
    w.write()

    w = &xf
    w.write()
}

以下就是 Go 语言的面向对象的使用方法。使用上比 C++ 表现得更加简洁和直接。

    没有找到数据。
您的邮箱不会被公开