• golang之面向对象编程


    1.Golang语言面向对象编程说明

      1)Golang也支持面向对象编程(OOP),但是和传统的面向对象编程有区别,并不是纯粹的面向对象语言。所以我们说Golang支持面向对象编程特性是比较准确的。

      2)Golang没有类(class),Go语言的结构体(struct)和其它编程语言的类(class)有同等的地位,你可以理解Golang是基于struct来实现OOP特性的。

      3)Golang面向对象编程非常简洁,去掉了传统OOP语言的继承、方法重载、构造函数和析构函数、隐藏的this指针等等。

      4)Golang仍然有面向对象编程的继承,封装和多态的特性,只是实现的方式和其它OOP语言不一样,比如继承:Golang没有extends关键字,继承是通过匿名字段来实现的。

      5)Golang面向对象(OOP)很优雅,OOP本身就是语言类型系统(type system)的一部分,通过接口关联,耦合性低,也非常灵活。后面同学们会充值体会到这个特点。也就是说在Golang中面向接口编程是非常重要的特性。

    type Cat struct {
        Name string
        Age int
        Color string
        Hobby string
    }
    
    func main() {
        var cat Cat
        cat.Name = "allin"
        cat.Age = 18
        cat.Color = "red"
        cat.Hobby = "eat"
    
        fmt.Println(cat)
        fmt.Println(cat.Hobby)
    }

    2.结构体和结构体变量(实例)的区别和联系

      1)结构体是自定义的数据类型,代表一类事物

      2)结构体变量(实例)是具体的,实际的,代表一个具体变量

     结构体基本语法

        type 结构体名称 struct {

          field1 type

          field2 type

        }

    结构体注意事项和细节说明

      1)字段声明语法同变量,示例:字段名  字段类型

      2)字段的类型可以为:基本类型、数组或引用类型

      3)在创建一个结构体变量后,如果没有给字段赋值,都对应一个零值(默认值),规则同前面讲的一样:

        布尔类型是false,数值是0,字符串是“”。

        数组类型的默认值和它的元素类型相关,比如 score [3]int 则为 [0, 0, 0]

        指针,slice,和map的零值都是nil,即还没有分配空间。

    type Person struct {
        Name string
        Age int
        Scores [5]float64
        ptr *int
        slice []int
        map1 map[string]string
    }
    
    func main() {
        var p1 Person
        fmt.Println(p1)
       // 使用slice和map,一定要先make
        p1.slice = make([]int, 10)
        p1.slice[0] = 100
    
        p1.map1 = make(map[string]string)
        p1.map1["key"] = "tom~"
        fmt.Println(p1)
    }

      4)不两只结构体变量的字段是独立,互不影响,一个结构体变量字段的更改,不影响另外一个,结构体是值类型。

    人生就是要不断折腾
  • 相关阅读:
    SSAS的维度表之间的关系只能有一个不能有多个
    SqlServer 在创建数据库时候指定的初始数据库大小是不能被收缩的
    SQL Server数据库的三种恢复模式:简单恢复模式、完整恢复模式和大容量日志恢复模式(转载)
    HttpHandler和ashx要实现IRequiresSessionState接口才能访问Session信息(转载)
    Jquery Ajax调用aspx页面方法 (转载)
    linux查找目录下的所有文件中是否含有某个字符串 <zhuan>
    ubuntu下使用sdk manager 安装sdk 其他版本
    Ubuntu更新命令 <转>
    sudo:must be setuid root 解决方法 <转>
    Ubuntu 查看磁盘空间大小命令<转>
  • 原文地址:https://www.cnblogs.com/xiangxiaolin/p/11855212.html
Copyright © 2020-2023  润新知