• go语言之进阶篇面向对象编程


    1、面向对象编程

    对于面向对象编程的支持Go 语言设计得非常简洁而优雅。因为, Go语言并没有沿袭传统面向对象编程中的诸多概念,比如继承(不支持继承,尽管匿名字段的内存布局和行为类似继承,但它并不是继承)、虚函数、构造函数和析构函数、隐藏的this指针等。

    尽管Go语言中没有封装、继承、多态这些概念,但同样通过别的方式实现这些特性:

    1. 封装:通过方法实现
    2. 继承:通过匿名字段实现
    3. 多态:通过接口实现

    2、匿名组合和匿名字段初始化

    示例:

    package main
    
    import "fmt"
    
    type Person struct {
    	name string //名字
    	sex  byte   //性别
    	age  int    //年龄
    }
    
    type Student struct {
    	Person //只有类型,没有名字,匿名字段,继承了Person的成员
    	id     int
    	addr   string
    }
    
    func main() {
    	//顺序初始化
    	var s1 Student = Student{Person{"mike", 'm', 18}, 1, "bj"}
    	fmt.Println("s1 = ", s1)
    
    	//自动推导类型
    	s2 := Student{Person{"mike", 'm', 18}, 1, "bj"}
    	//fmt.Println("s2 = ", s2)
    	//%+v, 显示更详细
    	fmt.Printf("s2 = %+v
    ", s2)
    
    	//指定成员初始化,没有初始化的常用自动赋值为0
    	s3 := Student{id: 1}
    	fmt.Printf("s3 = %+v
    ", s3)
    
    	s4 := Student{Person: Person{name: "mike"}, id: 1}
    	fmt.Printf("s4 = %+v
    ", s4)
    
    }
    

    执行结果:

    s1 =  {{mike 109 18} 1 bj}
    s2 = {Person:{name:mike sex:109 age:18} id:1 addr:bj}
    s3 = {Person:{name: sex:0 age:0} id:1 addr:}
    s4 = {Person:{name:mike sex:0 age:0} id:1 addr:}
    

      

  • 相关阅读:
    DAO设计模式实现数据库的增删改查(进一步封装JDBC工具类)
    MySQL聚合函数、控制流程函数(含navicat软件的介绍)
    MySQL JDBC事务处理、封装JDBC工具类
    ResultSet详解(转)
    开源软件收集
    免费开源3D模型设计软件汇总
    oschina多媒体工具
    oschina文件传输
    简单工厂模式
    权限表的设计
  • 原文地址:https://www.cnblogs.com/nulige/p/10248141.html
Copyright © 2020-2023  润新知