用户信息结构体组合
题目描述
定义结构体
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()
}