• go语言结构体使用小结


    转载请注明出处:

      在Go语言中,结构体(struct)是一种复合数据类型,它允许你将多个不同类型的字段组合成一个单一的类型。结构体为数据的封装和抽象提供了便利,使得数据组织更加清晰和易于管理。

    结构体的定义

      结构体的定义使用type关键字和struct类型,然后列出结构体的字段名和类型。

    type Person struct {  
        Name string  
        Age  int  
        Email string  
    }

      在这个例子中,定义了一个名为Person的结构体,它有三个字段:Name(字符串类型),Age(整型),和Email(字符串类型)。

    结构体的实例化

      使用结构体类型来创建结构体变量,这通常被称为结构体的实例化。

    复制代码
    // 使用字面量创建结构体实例  
    p1 := Person{  
        Name: "Alice",  
        Age:  30,  
        Email: "alice@example.com",  
    }  
      
    // 使用字段名来设置值  
    p2 := Person{  
        Name: "Bob",  
        Age:  25,  
    }  
    p2.Email = "bob@example.com"  
      
    // 使用结构体类型创建变量,然后分别设置字段  
    var p3 Person  
    p3.Name = "Charlie"  
    p3.Age = 35  
    p3.Email = "charlie@example.com"
    复制代码

    结构体的集合

      结构体集合通常指的是一个包含多个结构体实例的切片(slice)。

    复制代码
    // 定义一个Person类型的切片  
    var people []Person  
      
    // 向切片中添加结构体实例  
    people = append(people, p1)  
    people = append(people, p2)  
    people = append(people, p3)  
      
    // 或者直接初始化一个包含多个实例的切片  
    people = []Person{  
        {Name: "Alice", Age: 30, Email: "alice@example.com"},  
        {Name: "Bob", Age: 25, Email: "bob@example.com"},  
        {Name: "Charlie", Age: 35, Email: "charlie@example.com"},  
    }
    复制代码

    结构体的遍历

      使用for循环来遍历结构体切片。

    // 遍历结构体切片  
    for _, person := range people {  
        fmt.Printf("Name: %s, Age: %d, Email: %s\n", person.Name, person.Age, person.Email)  
    }

      在这个循环中,range关键字用于迭代people切片中的每一个元素。_是一个空白标识符,用于忽略索引值,只获取切片中的元素。person是每次迭代时当前元素的副本,可以访问它的字段。

    结构体方法和接收器

      在Go中,还可以为结构体定义方法,方法是一种特殊的函数,它关联到一个特定的类型上。方法的第一个参数是接收器(receiver),它指定了方法关联的类型。

    复制代码
    func (p Person) SayHello() {  
        fmt.Printf("Hello, my name is %s and I'm %d years old.\n", p.Name, p.Age)  
    }  
      
    // 使用结构体方法  
    p1.SayHello() // 输出: Hello, my name is Alice and I'm 30 years old.
    复制代码

      在上面的代码中,定义了一个名为SayHello的方法,它接收一个Person类型的接收器p。然后可以像调用普通函数一样调用这个方法,但是需要使用结构体实例来调用它。

     

  • 相关阅读:
    Install Ansible on CentOS 8
    JSON实例操作
    【最详细】最新最全Redis面试大全(50道)
    代码随想录第二十九天打卡| 491.递增子序列,46.全排列,47.全排列 II
    阿里云——算法面经
    我的创作纪念日
    C#使用Scoket实现服务器和客户端互发信息
    关于Request复用的那点破事儿。研究明白了,给你汇报一下。
    Chrome浏览器书签同步配置方法
    Windows下Docker搭建Flink集群
  • 原文地址:https://www.cnblogs.com/zjdxr-up/p/18132882