Go語言程式演示提升欄位的用法


在Go語言中,提升欄位是指嵌入到另一個結構體內的結構體,其欄位也可以透過嵌入它們的結構體訪問。本文將介紹三種不同的方法來演示使用提升欄位,包括使用和不使用指標的方法。

使用指標

在這個例子中,我們將使用指標來演示提升欄位。欄位名將透過指標設定,資訊將使用點表示法列印。

演算法

  • 步驟1 − 建立一個main包,並在程式中宣告fmt(格式化包),其中main生成可執行程式碼,fmt幫助格式化輸入和輸出。

  • 步驟2 − 建立一個Person結構體,包含兩個欄位:name(字串型別)和age(整型)。

  • 步驟3 − 然後,建立一個Employee結構體,其中包含一個提升欄位*Person和一個整型id,這意味著Person的欄位可以透過指標訪問。

  • 步驟4 − 建立一個main函式,設定Person結構體中的欄位值,然後使用指標將Person結構體值賦值給Employee結構體。

  • 步驟5 − 使用fmt包中的Println函式在控制檯上列印所有員工資訊。

示例

以下示例演示如何建立Go語言程式來演示使用指標的提升欄位。

package main

import "fmt"

type Person struct {
   name string
   age  int
}

type Employee struct {
   *Person 
   id int
}

func main() {
   ps := &Person{name: "Geneva", age: 28} 
   emp_info := &Employee{Person: ps, id: 442} 

   fmt.Println("The Employee name is:", emp_info.name) 
   fmt.Println("The Employee age is:", emp_info.age)   
   fmt.Println("The Employee id is:", emp_info.id) 
}

輸出

The Employee name is: Geneva
The Employee age is: 28
The Employee id is: 442

不使用指標

在這種方法中,將建立一個person和employee結構體,其中employee結構體將包含提升欄位,其欄位的值將在main函式中設定,並使用點表示法和欄位名列印。

演算法

  • 步驟1 − 建立一個main包,並在程式中宣告fmt(格式化包),其中main生成可執行程式碼,fmt幫助格式化輸入和輸出。

  • 步驟2 − 建立一個Person結構體,包含兩個欄位:name(字串型別)和age(整型)。

  • 步驟3 − 然後,建立一個Employee結構體,包含兩個欄位:一個整型id和一個提升欄位person。

  • 步驟4 − 現在,建立一個main函式,在這個函式中建立一個employee結構體,併為提升欄位Person的name和age提供值,併為id賦值。

  • 步驟5 − 最後,使用emp_info.name、emp_info.age和emp_info.id語法訪問Person的name和age。

  • 步驟6 − 使用fmt包中的Println函式(其中ln表示換行)在控制檯上列印所有上述資訊。

示例

在下面的示例中,我們將瞭解如何建立Go語言程式來演示不使用指標的提升欄位。

package main

import "fmt"

type Person struct {
   name string
   age  int
}

type Employee struct {
   Person // Promoted field
   id  int
}

func main() {
   emp_info := Employee{
      Person: Person{
         name: "Veronica", 
         age:  36,
      },
      id: 600,
   }

   fmt.Println("The Employee name is:", emp_info.name) 
   fmt.Println("The Employee age is:", emp_info.age) 
   fmt.Println("The Employee id is:", emp_info.id) 
}

輸出

The Employee name is: Veronica
The Employee age is: 36
The Employee id is: 600

使用Animal和Dog結構體

在這個示例中,我們將編寫一個Go語言程式來演示使用Animal和Dog結構體的提升欄位。Animal結構體是Dog結構體中的提升欄位。

演算法

  • 步驟1 − 建立一個main包,並在程式中宣告fmt(格式化包),其中main生成可執行程式碼,fmt幫助格式化輸入和輸出。

  • 步驟2 − 建立一個Animal結構體,包含兩個欄位:name(字串型別)和age(整型)。

  • 步驟3 − 然後,建立一個Dog結構體,其中包含一個提升欄位Animal和另一個字串型別的欄位Breed。

  • 步驟4 − 建立一個main函式,在其中設定提升欄位的值並將其儲存在Dog_struct中。

  • 步驟5 − 使用儲存變數和點表示法訪問欄位。

  • 步驟6 − 然後,使用相同的表示法訪問提升欄位。

  • 步驟7 − 使用fmt包中的Println函式(其中ln表示換行)執行列印語句。

示例

以下示例演示如何建立Go語言程式來演示使用Animal和Dog結構體的提升欄位。

package main

import "fmt"

type Animal struct {
   name string
   age  int
}

type Dog struct {
   Animal
   Breed string
}

func main() {
   Dog_struct := Dog{
      Animal: Animal{
         name: "pommy",
         age:  6,
      },
      Breed: "Labrador retriever",
   }	
   fmt.Println(Dog_struct.name)
   fmt.Println(Dog_struct.age)
   fmt.Println(Dog_struct.Breed)	
   fmt.Println(Dog_struct.Animal.name)
   fmt.Println(Dog_struct.Animal.age)
}

輸出

pommy
6
Labrador retriever
pommy
6

結論

我們編譯並執行了演示提升欄位的程式,使用了三個示例。在第一個示例中,提升欄位值在結構體中設定,在第二個示例中,它們透過指標設定,在第三個示例中,我們使用了Animal結構體。

更新於:2023年4月4日

347 次瀏覽

啟動您的職業生涯

完成課程獲得認證

開始學習
廣告