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結構體。