结构体

This commit is contained in:
yangyudong 2025-04-10 17:45:32 +08:00
parent 087e1ba3a1
commit 3c981f9315
2 changed files with 108 additions and 4 deletions

View File

@ -1,5 +1,53 @@
package main
func main() {
// TODO
import "fmt"
// 定义一个Person结构体
type Person struct {
Name string
Age int
}
// 给Person结构体定义一个方法
func (p Person) Greet() {
fmt.Printf("Hello, my name is %s and I'm %d years old.\n", p.Name, p.Age)
}
// 嵌套结构体示例
type Employee struct {
Person
JobTitle string
}
func main() {
// 结构体初始化方式1字段顺序
p1 := Person{"Alice", 25}
// 结构体初始化方式2字段名指定
p2 := Person{
Name: "Bob",
Age: 30,
}
// 访问结构体字段
fmt.Println(p1.Name) // Alice
fmt.Println(p2.Age) // 30
// 调用结构体方法
p1.Greet() // Hello, my name is Alice and I'm 25 years old.
p2.Greet() // Hello, my name is Bob and I'm 30 years old.
// 嵌套结构体初始化
emp := Employee{
Person: Person{
Name: "Charlie",
Age: 35,
},
JobTitle: "Developer",
}
// 访问嵌套结构体字段
fmt.Println(emp.Name) // Charlie (提升字段)
fmt.Println(emp.JobTitle) // Developer
emp.Greet() // Hello, my name is Charlie and I'm 35 years old.
}

View File

@ -1,5 +1,61 @@
package main
func main() {
// TODO
import "fmt"
// 定义一个接口
type Shape interface {
Area() float64
}
// 定义一个结构体Rectangle
type Rectangle struct {
Width, Height float64
}
// 实现接口方法Area
func (r Rectangle) Area() float64 {
return r.Width * r.Height
}
// 定义另一个结构体Circle
type Circle struct {
Radius float64
}
// 实现接口方法Area
func (c Circle) Area() float64 {
return 3.14 * c.Radius * c.Radius
}
func main() {
// 创建接口类型的切片
shapes := []Shape{
Rectangle{Width: 10, Height: 5},
Circle{Radius: 7},
}
shapes2 := []Shape{
Rectangle{Width: 20, Height: 10},
Circle{Radius: 14},
Rectangle{Width: 30, Height: 15},
Rectangle{5, 5},
}
// 遍历并调用接口方法
for _, shape := range shapes {
fmt.Printf("Shape Area: %.2f\n", shape.Area())
}
// i := 0
// for {
// fmt.Printf("Shape Area: %.2f\n", shapes2[i].Area())
// i++
// if i >= len(shapes2) {
// break
// }
// }
for _, shape := range shapes2 {
fmt.Printf("%.2f\n", shape.Area())
}
}