iT邦幫忙

2023 iThome 鐵人賽

DAY 4
0
Cloud Native

【하나, 둘, ready, get set, go】系列 第 4

【하나, 둘, ready, get set, go】Day 4 - 型別、宣告、別名

  • 分享至 

  • xImage
  •  

前情提要

我們在前一天,撰寫了第一支 Go 程式

今天開始就要來介紹 Go 的語法啦,首先要介紹的是 型別宣告方式 以及 別名

型別

下面這張表格是 Go 常見的資料型別

資料型別 預設值 說明
bool false 布林
string "" 字串
int, int8, int16, int32, int64 0 有號整數
uint, uint8, uint16, uint32, uint64 0 無號整數
byte 0 alias for uint8
rune 0 alias for int32
float32, float64 0.0 浮點數
complex64, complex128 (0+0i) 複數 (實數 + 虛數)
array [根據型別而定] 固定長度的陣列
slices nil 彈性長度的陣列
map nil 映射,key-value pair,像是 Dictionary
interface{} nil alias for any
pointer nil 指標
channels nil 用於 goroutines

如果沒有特別指定型別的話,Go 會自己推斷型別 (跟 Swift 一樣)

整數部分,Go 預設會使用 int

浮點數部分,Go 預設會使用 float64

複數部分,Go 預設會使用 complex128

規則

在許多程式語言中,如果要區分成員是否為 公開 (Public) 或是 私有 (Private) 時
可以直接在變數或是 Method 前加上 publicprivate

但 Go 並不存在這種方式,Go 要區分是否為 Public 或 Private 是透過第一個英文字的大小寫來決定

範例如下

// Public
var PublicVariables string
type PublicStruct struct {}
func PublicFunction() {}

// Private
var privateVariables string
type privateStruct struct {}
func privateFunction() {}

這個是跟其他語言相比,很不一樣的地方

還有一點是,Go 是以 package 來做區分,不同 package 之間只能互相存取 public 的成員
相同 package 則 public、private 成員都可以互相存取

宣告

Go 的變數/常數宣告方式如下

變數

一般宣告方式

/* 不宣告初始值,預設會是對應型別的預設值 */

var i int

/* 宣告初始值 */

var i int = 0 

var str string = "go"

var f float64 = 1.20

var ary [5]int = [5]int{1, 2, 3, 4, 5}

var slices []int = []int{1, 2, 3}

var maps = map[string]interface{}{"a": 1, "b": 2, "c": 3}

常見宣告方式

i := 0

str := "go"

f := 1.20

ary := [5]int{1, 2, 3, 4, 5}

slices := []int{1, 2, 3}

maps := map[string]interface{}{"a": 1, "b": 2, "c": 3}

常數

在 Go 要宣告常數,要使用 const 這個修飾字

宣告方式

/* 讓 Go 推斷型別 */

const pi = 3.14

/* 明確寫出型別 */

const pi float64 = 3.14

大量宣告

如果需要宣告大量的變數/常數的話,可以用括號 () 包起來,像是下面這樣

// 變數

var (
  i int = 0
  str string = "go
  f float64 = 1.2
  ary [5]int = [5]int{1, 2, 3, 4, 5
  slices []int = []int{1, 2, 3
  maps = map[string]interface{}{"a": 1, "b": 2, "c": 3}
)
// 常數

const (
  pi float64 = 3.14
  baseUrl string = "https://"
)

別名

顧名思義就是取綽號,寫起來也相當簡單

type RawValue string

以上面這個為例,我們幫 string 型別取了一個綽號叫做 RawValue,下面就來套用看看

const (
  BaseUrl RawValue = "https://"
  Root RawValue = "/api"
)

總結

今天簡單介紹了 Go 的資料型別、宣告方式以及別名用法

下一篇會來介紹 if 跟 switch case 的用法

明天見~


上一篇
【하나, 둘, ready, get set, go】Day 3 - 第一個 Go 程式
下一篇
【하나, 둘, ready, get set, go】Day 5 - if else、switch case
系列文
【하나, 둘, ready, get set, go】30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言