iT邦幫忙

2025 iThome 鐵人賽

DAY 10
0
Modern Web

後端攻略筆記系列 第 10

Day 10 : Struct入門 - 用「遙控車」搞懂什麼是 Struct!

  • 分享至 

  • xImage
  •  

Struct入門 - 用「遙控車」搞懂什麼是 Struct!

嗨,大家好!歡迎來到 Go 語言的世界!如果你剛開始學寫程式,可能會覺得要管理好多好多資料很頭痛。別擔心,今天我們要介紹一個超強大的工具,叫做 struct,它能幫我們把亂七八糟的資料整理得乾乾淨淨!

想像一下:你有一台遙控車

這台車有哪些特性?

  • 它有電量 (battery)
  • 它有自己的速度 (speed)
  • 它跑起來會耗電 (batteryDrain)
  • 它還記錄了已經跑多遠 (distance)

如果我們要用程式來描述這台車,可能會寫成這樣:

var battery = 100
var speed = 5
var batteryDrain = 2
var distance = 0

這樣寫沒錯,但如果我們有第二台、第三台車呢?那變數不就滿天飛,搞不清楚誰是誰了嗎?

這就是 struct 派上用場的時候了!

什麼是 Struct?資料的「打包神器」!

Struct 在 Go 語言中,就像一個「藍圖」或「模具」。你可以用它來設計一個包含多種屬性的新東西。

讓我們用 struct 來設計一台「遙控車」的藍圖:

// 告訴 Go:我要設計一個新的東西,叫做 "Car"
type Car struct {
    // 裡面包含了這四個屬性 (我們稱之為 "欄位")
        battery      int
        batteryDrain int
        speed        int
        distance     int
}

看!我們把所有跟車子相關的資料都「打包」進 Car 這個 struct 裡了。從現在起,Car 就是我們自己創造的一種資料型別,就像 int (整數) 或 string (字串) 一樣。

製造一台屬於你的遙控車!

有了藍圖,我們就可以開始「製造」實體的車子了。我們通常會寫一個專門用來製造車子的「工廠函式」,確保每一台新車都有標準的初始狀態。

// NewCar 是一個工廠,專門製造新的 Car
func NewCar(speed, batteryDrain int) Car {
        // 回傳一台設定好的 Car
        return Car{
                speed:        speed,        // 速度和耗電由我們決定
                batteryDrain: batteryDrain,
                battery:      100,          // 新車的電池都是 100% 滿的!
                distance:     0,            // 還沒跑,所以距離是 0
        }
}

現在,我們可以在主程式中,輕鬆地製造出不同性能的車子了!

func main() {
    // 製造一台「紅色閃電」,速度快但耗電
    redLightning := NewCar(10, 5)

    // 製造一台「綠色烏龜」,速度慢但省電
    greenTurtle := NewCar(3, 1)

    // 你可以印出來看看它們的初始狀態
    fmt.Println("紅色閃電:", redLightning)
    fmt.Println("綠色烏龜:", greenTurtle)
}

第一篇總結:

  • Struct 是一種自定義的資料型別,能將相關的資料打包在一起。
  • 它就像一張「藍圖」,用來設計你自己的物件。
  • 我們可以編寫「工廠函式」(如 NewCar)來方便地建立 struct 的實體。

恭喜你~~你已經學會了如何用 struct 來組織你的資料了!在下一篇文章中,我們將學習如何讓這台遙控車真正地「動」起來,並揭開 Go 語言中一個更強大、更專業的秘密!



上一篇
Day 9 : Go 指標與結構 — 篇三:結構體(struct)與選舉系統案例實作
下一篇
Day 11 : Struct入門 2 - 讓你的遙控車動起來!Go 方法與指標的秘密
系列文
後端攻略筆記13
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言