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

相关推荐
小羊没烦恼!11 分钟前
Hello Web API系列教程——Web API与国际化
java·服务器·前端·javascript·php
dadaobusi40 分钟前
学习:开源项目Cheshire
学习
Cx330❀1 小时前
【Linux网络】网络层协议 IP :从网络层原理到 Linux 内核源码
linux·运维·服务器·网络·tcp/ip·ai·ai编程
撩得Android一次心动1 小时前
Jetpack Compose 知识点整理1【个人用】
android·学习·kotlin·android jetpack·compose
Gl�ria2 小时前
Linux 清理日志常用命令
linux·运维·服务器
天道jimmy3 小时前
VulnHub 系列:HA, Wordy
linux·服务器·web安全
xian_wwq3 小时前
【学习笔记】OWASP Agentic 应用安全(二)
笔记·学习·安全·owasp
码士集团小青3 小时前
从对标 Java 到对标 Go:Native AOT 的“无痛化“之路,走到哪一站了?
golang
右耳朵猫AI4 小时前
Go周刊2026W36 | Go 1.27.1 发布、TinyGo 0.42、HTTP/2 原生迁入 net/http、quic-go 0.62
redis·http·golang