• struct&Method


    Go通过类型别名和结构体的形式支持用户自定义类型。
    结构体是复合类型。通过new来创建

    组成结构体类型的数据称为字段。
    type identifier struct {
    field1 type1
    field2 type2
    ...
    }

    在结构体的指针和结构体引用中,调用结构体内的字段都使用选择器(.)就是这个点。。。。叫结构体。。。

    混合字面量语法new一个结构体对象
    &struct{a,b,c}底层用的还是new()
    new(Type)和&Type{}是等价的。
    初始化方法
    intr := Interval{0, 3} (A)
    intr := Interval{end:5, start:1} (B)
    intr := Interval{end:5} (C)

    Go 语言中,结构体和它所包含的数据在内存中是以连续块的形式存在的,即使结构体中嵌套有其他的结构体

    给结构体的字段添加标签:
    type Num struct {
    a int "I am a"
    b int "I am b"
    c int "I am c"
    }

    匿名字段:
    只有类型没有字段名(此时类型就是字段名)
    type Num struct {
    a int "I am a"
    b int "I am b"
    c int "I am c"
    int "I ma int"
    }
    内嵌结构体
    结构体也是一种数据类型,所以它也可以作为一个匿名字段来使用
    (继承机制)

    当外层结构体和内嵌结构体不冲突时:
    内嵌结构体的所有字段和方法都会被继承到外层结构体

    当外层结构体和内嵌结构体命名冲突时。
    内嵌结构体的字段被隐藏
    内嵌结构体的方法被隐藏
    但是当字段被隐藏,方法没有重名没有隐藏的话,方法内使用的指针是内嵌结构体对象的字段(就是那个被隐藏的)但是字段没有被隐藏,方法被隐藏的话,调用的字段也是父类的那个字段。(总的来说,方法是谁的就用谁的字段。)

    (结构体是一个值类型、不是引用类型,所以传递结构体的时候使用的是拷贝)
    方法:(方法是作用在接收者上的一个函数)
    接收者必须是对应的结构体类型的引用或者指针。
    方法定义
    func (a *denseMatrix) Add(b Matrix) Matrix
    func (a *sparseMatrix) Add(b Matrix) Matrix

    接收者不能是一个接口类型,因为接口是一个抽象定义,所有的东西都是抽象的未完成的。
    接收者也不能是一个指针类型。但是可以是任何其它允许类型的指针。
    (可以是一个指针,但是不可以是一个指针类型的值)

    类型和作用在它上面的方法必须在同一包内定义。


    对于struct来说,struct的别名首字母大写表示外部包可以使用,但是字段没有大写则外部包就不能看到,所以,如果要是外部包可以看到字段,也需要大写。方法也是

    类型的String()方法,被fmt.print等使用。

  • 相关阅读:
    软件开发模式
    个人中心设计
    定制四则运算
    功能测试用例分析报告
    NABCD
    开发流程
    开发流程
    结对编程
    注册界面进行Toast提示
    登录注册页面修改错误
  • 原文地址:https://www.cnblogs.com/mcmx/p/11380576.html
Copyright © 2020-2023  润新知