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语言中是一种强大的工具,用于组织和表示复杂的数据结构。

相关推荐
赴前尘1 小时前
Go 微服务框架排行榜(按 GitHub Star 排序)
微服务·golang·github
2301_790994991 小时前
仿神秘海域/美末环境交互的程序化动画学习
学习·microsoft·交互
能不能别报错1 小时前
K8s学习笔记(十六) 探针(Probe)
笔记·学习·kubernetes
爱奥尼欧1 小时前
【Linux】网络部分——Socket编程 UDP实现网络云服务器与本地虚拟机的基本通信
linux·服务器·网络
初圣魔门首席弟子1 小时前
C++ STL 向量(vector)学习笔记:从基础到实战
c++·笔记·学习
qiangshang9901262 小时前
WPF+MVVM入门学习
学习·wpf
iconball2 小时前
个人用云计算学习笔记 --20 (Nginx 服务器)
linux·运维·笔记·学习·云计算
liu****2 小时前
基于websocket的多用户网页五子棋(九)
服务器·网络·数据库·c++·websocket·网络协议·个人开发
liu****2 小时前
基于websocket的多用户网页五子棋(八)
服务器·前端·javascript·数据库·c++·websocket·个人开发
生物小卡拉2 小时前
R脚本--表达矩阵与特征矩阵相关性分析
笔记·学习·机器学习