Go语言程序:展示提升的方法


在Go语言中,提升的方法是在嵌入到另一个结构体中的结构体中创建的方法。现在,嵌入它的结构体可以访问其方法和字段。在本文中,我们将解释如何使用各种结构体(如矩形和正方形、车辆和汽车)来展示提升的方法。

算法

  • 步骤1 − 创建一个名为main的包,并在程序中声明fmt(格式化包),其中main生成可执行代码,fmt帮助格式化输入和输出。

  • 步骤2 − 创建一个矩形结构体,它有两个字段:宽度和高度,类型为浮点数。

  • 步骤3 − 然后,创建一个名为Area()的方法,计算矩形的面积。

  • 步骤4 − 创建另一个正方形结构体,它只有一个字段表示正方形的边长,类型为浮点数,并将矩形结构体嵌入其中,即正方形可以访问矩形的所有字段和方法。

  • 步骤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

在这个例子中,我们将编写一个Go语言程序来展示使用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结构体来执行程序。因此,程序成功执行。

更新于:2023年4月4日

浏览量:366

启动您的职业生涯

通过完成课程获得认证

开始学习
广告
© . All rights reserved.