【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()

}
相关推荐
basketball61637 分钟前
Go 语言从入门到进阶:4. 数组和MAP使用方法总结
开发语言·后端·golang
Generalzy5 小时前
从本地 Demo 到生产级检索:Milvus 学习笔记(1)
golang·prompt·软件工程
go不是csgo6 小时前
GORM 上手:一个 main.go 跑通 Go 数据库增删改查
jvm·数据库·golang
知彼解己7 小时前
RAG 核心实战:检索增强生成
后端·golang·ai编程
子安柠8 小时前
Go语言并发编程:协程与管道详解
开发语言·后端·golang
basketball61610 小时前
Go 语言从入门到进阶:5. 玩转Go函数
开发语言·后端·golang
不爱编程的小陈12 小时前
Go内存模型与GC机制:高性能编程的核心
开发语言·后端·golang
go不是csgo12 小时前
sync.Map 源码大变天:一棵 16 叉树如何干掉 read/dirty 双 Map
golang
jieyucx12 小时前
Go 语言零基础入门:标准库 log 包完全教程
golang·日志·log
会编程的土豆12 小时前
Go 语言匿名函数详解
c++·golang·xcode