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

}
相关推荐
XMYX-02 小时前
07 - Go 函数(上):定义、参数、返回值与实战技巧
开发语言·后端·golang
hrhcode14 小时前
【java工程师快速上手go】二.Go进阶特性
java·golang·go
Tomhex16 小时前
Go字符串拼接最佳实践
golang·go
zs宝来了16 小时前
Go 内存管理:三色标记 GC 与逃逸分析
golang·go·后端技术
zs宝来了20 小时前
Go pprof 性能剖析:CPU、内存与锁分析
golang·go·后端技术
hrhcode1 天前
【java工程师快速上手go】一.Go语言基础
java·开发语言·golang
LlNingyu1 天前
Go 实现无锁环形队列:面向多生产者多消费者的高性能 MPMC 设计
开发语言·golang·队列·mpmc·数据通道
深挖派1 天前
GoLand 2026.1 安装配置与环境搭建 (保姆级图文教程)
后端·golang·编辑器·go·goland
geovindu1 天前
go: Factory Method Pattern
开发语言·后端·golang