go语言学习之旅之Go结构体

在Go语言中,结构体(struct)是一种用户定义的数据类型,用于组合不同类型的数据项。结构体可以包含其他结构体或基本数据类型的字段。以下是关于Go语言结构体的基本知识:

定义结构体:

go 复制代码
package main

import "fmt"

// 定义一个结构体
type Person struct {
    FirstName string
    LastName  string
    Age       int
}

func main() {
    // 创建结构体实例
    person1 := Person{
        FirstName: "John",
        LastName:  "Doe",
        Age:       30,
    }

    // 访问结构体字段
    fmt.Println("First Name:", person1.FirstName)
    fmt.Println("Last Name:", person1.LastName)
    fmt.Println("Age:", person1.Age)
}

结构体的零值:

未初始化的结构体字段将使用它们的零值。对于字符串类型,零值是空字符串;对于数值类型,零值是0。

匿名结构体:

可以在使用的地方直接定义结构体,而不必显式声明结构体类型。

go 复制代码
package main

import "fmt"

func main() {
    // 匿名结构体
    person := struct {
        FirstName string
        LastName  string
        Age       int
    }{
        FirstName: "Jane",
        LastName:  "Doe",
        Age:       25,
    }

    fmt.Println("First Name:", person.FirstName)
    fmt.Println("Last Name:", person.LastName)
    fmt.Println("Age:", person.Age)
}

结构体方法:

可以在结构体上定义方法,这是一种在结构体上附加行为的方式。

go 复制代码
package main

import "fmt"

type Rectangle struct {
    Width  float64
    Height float64
}

// 定义结构体方法
func (r Rectangle) Area() float64 {
    return r.Width * r.Height
}

func main() {
    rectangle := Rectangle{
        Width:  10,
        Height: 5,
    }

    // 调用结构体方法
    area := rectangle.Area()
    fmt.Println("Area of the rectangle:", area)
}

嵌套结构体:

结构体可以包含其他结构体,形成嵌套结构体。

go 复制代码
package main

import "fmt"

type Address struct {
    City  string
    State string
}

type Person struct {
    FirstName string
    LastName  string
    Age       int
    Address   Address // 嵌套结构体
}

func main() {
    // 创建嵌套结构体实例
    person := Person{
        FirstName: "Alice",
        LastName:  "Smith",
        Age:       28,
        Address: Address{
            City:  "New York",
            State: "NY",
        },
    }

    // 访问嵌套结构体字段
    fmt.Println("First Name:", person.FirstName)
    fmt.Println("Last Name:", person.LastName)
    fmt.Println("Age:", person.Age)
    fmt.Println("City:", person.Address.City)
    fmt.Println("State:", person.Address.State)
}

这些是关于Go语言结构体的基本知识。结构体在Go语言中是一种强大的工具,用于组织和表示复杂的数据结构。

相关推荐
菜鸟‍几秒前
【论文学习】SAMed-2: 选择性记忆增强的医学任意分割模型
人工智能·学习·算法
weixin_409383122 分钟前
简单四方向a*寻路学习记录2 先做个数组地图 在cocos编辑器模式上运行出格子 计算角色世界坐标跟数组地图的联系
学习·编辑器·cocos
qq_479875433 分钟前
std::true_type {}
java·linux·服务器
一过菜只因5 分钟前
MySql学习(2)
数据库·学习·mysql
灰灰勇闯IT16 分钟前
虚拟机性能优化实战:从基础调优到深度压榨性能
开发语言·学习·性能优化·虚拟机
xxp432117 分钟前
Linux 根文件系统构建
linux·学习
边疆.17 分钟前
【Linux】文件系统
linux·运维·服务器·磁盘·文件系统·软硬链接
_dindong18 分钟前
Linux网络编程:Reactor反应堆模式
linux·服务器·网络·设计模式·php
vi1212321 分钟前
农业图像预处理技术学习综述:原理、实现与应用
人工智能·学习
世界宇宙超级无敌究极特级顶级第一非常谱尼23 分钟前
RF Power Amplifiers for Wireless Communications 第二章学习笔记
笔记·学习·pa·功率放大器·mmic