iT邦幫忙

2021 iThome 鐵人賽

DAY 10
0
Modern Web

golang後端入門分享系列 第 10

Day10-Go結構Struct

前言

今天要介紹 Go 語言的另一種資料型態,在先前,我們介紹的變數都是儲存單一的值或是多個相同型態的值,那如果要用變數表示較複雜的概念,像是紀錄一個人的名字、年齡或是身高時,由於這些是不同的資料型態,所以要記錄下來時,就必須使用不同的容器,這裡會介紹 Go 語言中的結構 Struct;此外,大部分的 Go 物件導向程式也會使用結構,但本篇單純介紹結構,先不會帶入物件導向的概念。

建立結構

Go 使用 struct 做為結構的關鍵字,這是承襲 C 的慣例。下面介紹一下如何建立一個結構:

type Person struct {
   name  string
   year  int64
   heigh float64
}

我們通常會在宣告結構時一併定義新的型別,因為種結構在程式裡,可能會多次使用,便於後續程式呼叫,使用 type 可以宣告新型別,在上述的例子我們建立一個叫 Person 的 struct,而裡面的結構組成有 name(string) 、year (int64)和 heigh(float64)。接著我們以此結構,宣告一個變數,並填入其裡頭的屬性:

package main
 
import "fmt"
 
type Person struct {
   name  string
   year  int64
   heigh float64
}
 
func main() {
   jack := Person{
       name:  "Jack",
       year:  18,
       heigh: 178,
   }
 
   fmt.Println(jack) // {Jack 18 178}
}

透過使用結構,我們可以更有效率地處資料數據,以下示範如何使用結構裡的數據,來進來一些運算及判斷,我們看以下範例:

package main
import (
   "fmt"
)
type Rectangle struct {
   length float64
   width  float64
}
func main() {
   x := Rectangle{
       length: 3,
       width:  3,
   }
  
   if x.length == x.width{
       fmt.Println("這是個正方形,且面積為", x.length * x.width)
   } else{
       fmt.Println("這只是個長方形,面積為", x.length * x.width)
   }
}

上述的例子,先宣告一個名為 Rectangle 的結構,裡面屬性有 length 和 width,再以此結構宣告一個變數 x 並填入其屬性,然後依照屬性來判斷其是否為正方形,並計算其面積。

結語

本文介紹了 Go 語言的結構 Struct,結構是 Go 語言一個很重要的資料型態,希望能讓讀者瞭解結構基本的使用方式。下一篇文章會介紹 Go 語言的 Map,謝謝讀者們今天的閱讀!

參考來源

https://opensourcedoc.com/golang-programming/struct/


上一篇
Day9-Go切片Slice
下一篇
Day11-Go映射map
系列文
golang後端入門分享30

尚未有邦友留言

立即登入留言