【GO】结构体组合练习题

用户信息结构体组合

题目描述

定义结构体 User,包含字段:

  • Username string
  • Age int

定义结构体 Student组合 User,并新增字段:

  • StudentID string

创建 Student 变量,赋值并打印所有字段。

输出示例

姓名: 张三

年龄: 20

学号: 2025001

实现代码

Go 复制代码
package main

import "fmt"

// 基础结构体
type User struct {
	Username string
	Age      int
}

// 结构体组合:Student 组合 User
type Student struct {
	User      // 匿名组合(结构体嵌套)
	StudentID string
}

func main() {
	// 创建组合结构体变量
	stu := Student{
		User: User{
			Username: "张三",
			Age:      20,
		},
		StudentID: "2025001",
	}

	// 直接访问组合后的字段
	fmt.Println("姓名:", stu.Username)
	fmt.Println("年龄:", stu.Age)
	fmt.Println("学号:", stu.StudentID)
}

多层结构体嵌套组合

题目描述

定义 Address:Province, City

定义 User:Name, Age

定义 Student 组合 User 和 Address,新增 StudentID

赋值并打印全部信息。

输出示例

姓名: 李四

年龄: 21

省份: 广东

城市: 深圳

学号: 2025002

实现代码

Go 复制代码
package main

import "fmt"

type Address struct {
	Province string
	City     string
}

type User struct {
	Name string
	Age  int
}

type Student struct {
	User
	Address
	StudentID string
}

func main() {
	stu := Student{
		User: User{
			Name: "李四",
			Age:  21,
		},
		Address: Address{
			Province: "广东",
			City:     "深圳",
		},
		StudentID: "2025002",
	}

	fmt.Println("姓名:", stu.Name)
	fmt.Println("年龄:", stu.Age)
	fmt.Println("省份:", stu.Province)
	fmt.Println("城市:", stu.City)
	fmt.Println("学号:", stu.StudentID)
}

结构体组合与方法继承

题目描述

定义 Person 结构体:Name string

Person 添加方法 Say() string,返回 "我是:xxx"

定义 Teacher 组合 Person,新增 Course string

创建对象并调用方法与字段。

输出示例

我是:王老师

授课课程: Go语言

实现代码

Go 复制代码
package main

import "fmt"

type Person struct {
	Name string
}

func (p Person) Say() string {
	return "我是:" + p.Name
}

type Teacher struct {
	Person
	Course string
}

func main() {
	teacher := Teacher{
		Person: Person{
			Name: "王老师",
		},
		Course: "Go语言",
	}

	fmt.Println(teacher.Say())
	fmt.Println("授课课程:", teacher.Course)
}

结构体组合实现多种动物

题目描述

定义 Animal 结构体,包含 Name、Type (类型:猫、狗、鸟)字段

为 Animal 添加三个方法

  • Eat() string:返回 "xxx 正在吃食物"
  • Sleep() string:返回 "xxx 正在睡觉"
  • Speak() string:返回 "xxx 发出未知声音"

定义 Cat、Dog、Bird 分别组合 Animal

重写各动物的 Speak():猫"喵喵叫"、狗"汪汪叫"、鸟"叽叽喳喳叫"

main 中创建三种动物,调用所有方法并打印。

输出示例

小白 正在吃食物

小白 正在睡觉

小白 喵喵叫

大黄 正在吃食物

大黄 正在睡觉

大黄 汪汪叫

小翠 正在吃食物

小翠 正在睡觉

小翠 叽叽喳喳叫

实现代码

Go 复制代码
package main

import "fmt"

type Animal struct {
	Name string
	Type string
}

func (a Animal) Eat() string {
	return fmt.Sprintf("%s 正在吃食物", a.Name)
}

func (a Animal) Sleep() string {
	return fmt.Sprintf("%s 正在睡觉", a.Name)
}

func (a Animal) Speak() string {
	return fmt.Sprintf("%s 发出未知声音", a.Name)
}

type Cat struct {
	Animal
}

func (c Cat) Speak() string {
	return fmt.Sprintf("%s 喵喵叫", c.Name)
}

type Dog struct {
	Animal
}

func (d Dog) Speak() string {
	return fmt.Sprintf("%s 汪汪叫", d.Name)
}

type Bird struct {
	Animal
}

func (b Bird) Speak() string {
	return fmt.Sprintf("%s 叽叽喳喳叫", b.Name)
}

func main() {
	cat := Cat{Animal{Name: "小白", Type: "猫"}}
	dog := Dog{Animal{Name: "大黄", Type: "狗"}}
	bird := Bird{Animal{Name: "小翠", Type: "鸟"}}

	fmt.Println(cat.Eat())
	fmt.Println(cat.Sleep())
	fmt.Println(cat.Speak())
	fmt.Println()

	fmt.Println(dog.Eat())
	fmt.Println(dog.Sleep())
	fmt.Println(dog.Speak())
	fmt.Println()

	fmt.Println(bird.Eat())
	fmt.Println(bird.Sleep())
	fmt.Println(bird.Speak())
	fmt.Println()

}
相关推荐
念何架构之路38 分钟前
Go Socket编程
开发语言·后端·golang
codeejun3 小时前
每日一Go-59、云原生入门为什么一定要学Docker?
docker·云原生·golang
初心未改HD4 小时前
gRPC 与 Protobuf 实战指南
开发语言·golang
jieyucx4 小时前
Go语言切片:动态灵活的数据序列
算法·golang·指针·顺序表·数组·结构体·切片
初心未改HD6 小时前
Go 文件与 I/O 操作完全指南
开发语言·golang
geovindu12 小时前
go: Mediator Pattern
设计模式·golang·中介者模式
研究点啥好呢1 天前
滴滴Go后端开发工程师面试题精选:10道高频考题+答案解析
java·开发语言·golang
NEGl DRYN1 天前
Go基础之环境搭建
开发语言·后端·golang
初心未改HD1 天前
Go Modules:依赖管理的完全指南
开发语言·golang
rOuN STAT1 天前
Golang 构建学习
开发语言·学习·golang