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.