• go基础系列~结构体


    一 基本定义

    type T1 struct { //定义结构体T1
    e,f string //相同属性的字段可以合并写在一行
    }
    type Test(T大写代表能跨包调用) struct { //定义结构体T2 嵌套T1
    b c int,
    d *T1 //嵌套结构图常见于嵌套结构图类型的指针
    e T1
    } tt=Test{d:&T1{}}//嵌套指针实例化
    tt=Test{d:T1{}}//嵌套对象实例化
    tt.d.e="1123"//调用嵌套结构体的属性 tt.b=3//调用本身结构体的属性

    二  匿名结构体-没有结构体名称

    a5 := struct{ // 匿名结构体,定义并初始化
    name string
    height float32
    }

    三 空结构体-空结构体即使没有属性也可以拥有方法

    type a struct {
    }

    四  传递

    • 结构体对象作为函数参数传递是值拷贝,在函数内部操作不影响外部结果 对象
    • 结构体指针作为函数参数传递是地址拷贝,在函数内部操作影响外部结果 指针
    • 你如果想改变构体实例化对象的数据的值,就传递指针,如果不想改变结构体对象的值,就传递对象

    五 结构体构造函数

    构造函数的核心有2点 1 是必须要内部实现实例化 2 是通常返回指针类型,所以实例化要取地址&

    func newInstanceKey(hostname string, port int, resolve bool) (instanceKey *InstanceKey, err error) {//构造函数
    if hostname == "" {
    return instanceKey, fmt.Errorf("NewResolveInstanceKey: Empty hostname")
    }

    instanceKey = &InstanceKey{Hostname: hostname, Port: port}//结构体指针初始化
    if resolve {
    instanceKey, err = instanceKey.ResolveHostname()//调用解析函数
    }
    return instanceKey, err//返回结构体对象
    }

    六 总结-整个流程

    1. type定义结构体
    2. newfunction 定义结构体构造函数
    3. (struct_a(可用this关键字代替) *结构体)function()定义方法并和结构体绑定

    七 结构体切片

    type Test struct {
        Value int
    }
    var slice *[]Test //定义结构体切片
    func buildStruct(count int)*[]Test{ //定义函数返回结构体切片
    slice := make([]Test,0)
    
        for i:=0;i<count;i++ {
            t := Test{Value:i}
            slice = append(slice,t)//追加元素
        }
        return &slice//返回切片地址
    
    }
  • 相关阅读:
    access 连接数据库
    Debug 和 Release 的区别
    Centos
    打印画面
    读取文件夹以及消除
    常用的文件文件夹目录的操作函数
    db的操作
    从数据库取数据
    pdf文件的作成
    读取文件
  • 原文地址:https://www.cnblogs.com/danhuangpai/p/16557229.html
Copyright © 2020-2023  润新知