Golang 展示提升方法
在Golang中,提升方法是在嵌入在另一个结构体内部的结构体中创建的方法,现在嵌入它的结构体可以访问其方法和字段。在本文中,我们将解释如何使用各种结构体(如Rectangle和Square、Vehicle和car)展示提升方法。
步骤
- 第1步 - 创建一个
main
包,并在程序中声明fmt
(格式化包)包,其中main
生成可执行代码,fmt
帮助格式化输入和输出。 -
第2步 - 创建一个
Rectangle
结构体,包含两个float
类型的字段width
和height
。 -
第3步 - 创建一个名为
Area()
的方法,用于计算矩形的面积。 -
第4步 - 创建另一个
Square
结构体,其中包含一个字段,表示方形的边长,类型为float
,并将Rectangle
结构体嵌入其中,即Rectangle
的所有字段和方法将在Square
内部访问。 -
第5步 - 在
main
函数中,使用点符号设置矩形的宽度和高度,然后调用提升的area
方法。 -
第6步 - 最后,使用
fmt
包的Println
函数将矩形的面积打印在控制台上,其中ln
表示换行。
示例1
在这个示例中,我们将创建两个结构体Rectangle
和Square
,我们将Rectangle
结构体嵌入Square
结构体中,所有Rectangle
的字段和方法都可以通过Square
访问。
package main
import (
"fmt"
)
type Rectangle struct {
width, height float64
}
func (rect Rectangle) Area() float64 {
return rect.width * rect.height
}
type Square struct {
side float64
Rectangle
}
func main() {
sqr := Square{side: 6}
sqr.width = 3
sqr.height = 4
fmt.Println("The area of rectangle is:")
fmt.Println(sqr.Area())
}
输出
The area of rectangle is:
12
示例2
在这个示例中,我们将使用Vehicle和Car结构示例来展示提升的方法。在这里,Vehicle将被嵌入到Car结构中,这意味着Vehicle下的方法和字段现在可以被Car结构访问。
package main
import (
"fmt"
)
type Vehicle struct {
color string
}
func (vch *Vehicle) Start() {
fmt.Println("Starting vehicle...")
}
type Car struct {
brand string
*Vehicle
}
func main() {
cr := Car{
brand: "Tatan Motors",
Vehicle: &Vehicle{
color: "Grey",
},
}
fmt.Println(cr.color)
cr.Start()
}
输出
Grey
Starting vehicle...
示例3
在这个示例中,我们将编写一个Golang程序,演示使用继承方法的示例。在Person和Employee结构体中,greet将是继承的方法,因为它可以访问Person结构体。
package main
import "fmt"
type Person struct {
name string
age int
}
func (p Person) greet() {
fmt.Println("Hello, my name is", p.name)
}
type Employee struct {
Person
Salary float64
}
func main() {
emp := Employee{Person{"Kanika", 26}, 150000.00}
emp.greet()
}
输出
Hello, my name is Kanika
结论
我们编写并执行了展示使用三个示例的提升方法的程序。在第一个示例中,我们使用了Rectangle和Square结构体来使用提升方法,在第二个示例中,我们使用了Vehicle和Car结构体,在第三个示例中,我们使用了Person和Employee结构体来执行程序。因此,程序成功执行。