显示promoted方法的Golang程序
在Golang中,Promoted方法是在嵌入到另一个结构体中的结构体下创建的方法,现在它被嵌入的结构体可以访问它的方法和字段。在本文中,我们将解释如何使用各种结构体(如矩形和正方形、车辆和汽车)显示promoted方法。
算法
- 步骤1 − 在程序中创建一个main包并声明fmt(格式化包)包,其中main包产生可执行代码,fmt 帮助进行输入和输出格式化。
-
步骤2 − 创建一个类型为float的长和宽两个字段的矩形结构体
Rectangle
。 -
步骤3 − 接着,创建一个名为Area()的方法用于计算矩形的面积。
-
步骤4 − 创建一个单一字段的正方形结构体
Square
,该字段表示正方形的边长,并将矩形结构体嵌入其中,即Square
结构体内可以访问矩形的所有的字段和方法。 -
步骤5 − 在main函数中,使用点符号设置矩形的宽度和高度,并调用promoted的Area()方法。
-
步骤6 − 最后,使用fmt包中的Println函数将矩形的面积打印在控制台上,其中ln表示换行符。
示例1
在本示例中,我们将创建两个结构体Rectangle
和Square
,并将Rectangle
结构体嵌入到Square
结构体中,Square
结构体可以通过访问Rectangle
结构体来访问所有的字段和方法。
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
来显示promoted方法。在此,Vehicle
将被嵌入到Car
中,这意味着现在可以通过Car
结构体访问Vehicle
下的方法和字段。
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
结构体展示promoted方法的用法,其中greet
将被promoted,因为它可以访问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
结论
我们编译并执行了展示推广方法的程序,使用了三个示例。在第一个示例中,我们使用矩形和正方形的结构体来使用推广方法,在第二个示例中,我们使用了车辆和汽车的结构体,在第三个示例中我们使用了人和员工的结构体来执行该程序。因此,程序成功执行。