iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 4
0
DevOps

欸你這週GO了嘛系列 第 4

[DAY4]認識GO-上

簡單介紹GO的基本型別

布林值

go的布林值分成true或是false,宣告布林變數時,預設為false

func main() {
	var isFatMan bool
	var weight int
	weight = 80
	if weight > 70 {
		isFatMan = true
	}
	fmt.Println("weight over 70 is fatman:", isFatMan)
}
weight over 70 is fatman: true

if判斷式時,除了

if isFatMan ==true {
	fmt.Println("mdfk~~i'm fatman")
}

也可以用

if isFatMan {
	fmt.Println("mdfk~~i'm fatman")
}
//!視同false
if !isFatMan {
	fmt.Println("mdfk~~i'm fatman")
}

如果有使用golang lint套件去檢查程式碼時,套件會建議使用下面寫法。

數字

golang本身有以下幾種數字型態
int int8 int16 int32 int64
uint uint8 uint16 uint32 uint64 uintptr
float32 float64
complex64 complex128
uint簡單說就是正整數,int就相反是帶負數的整數,長度大小就可以wiki一下,
懶人作法就直接int64到底。
https://ithelp.ithome.com.tw/upload/images/20200910/20129515tM0XCoyU9s.png
如果需要進行數值運算,二邊的型態都需要一致才行喔,不然會噴ERR

package main

import "fmt"

func main() {
	var a int
	var b int32
	var c int64

	a = 10
	b = 100
	c = a + b
	fmt.Println("c:", c)

}

 invalid operation: a + b (mismatched types int and int32)

字串(STRING)

golang有三種型態,string、byte跟rune,rune因為沒用到,所以就不特別介紹它。
string跟byte可轉換

package main

import "fmt"

func main() {
	var aa string
	var bb []byte
	aa = "i'm fatman"
	bb = []byte(aa)
	fmt.Println("aa:", aa)
	fmt.Println("bb:", bb)
	fmt.Println("string bb:", string(bb))

}

aa: i'm fatman
bb: [105 39 109 32 102 97 116 109 97 110]
string bb: i'm fatman

SLICE(切片)與ARRAY(陣列)

簡單來說ARRAY需要宣告長度,SLICE不需要,使用上SLICE相對來說方便,
尤其需要塞一個不定長度的陣列值時,用SLICE才是最方便的作法,
更詳細的內容可以考慮這篇文章https://michaelchen.tech/golang-programming/array-slice/

陣列的情境

package main

import "fmt"

func main() {
	imarray := [4]string{"A", "B", "C", "D"}
	fmt.Println("i'm array:", imarray)
}
i'm array: [A B C D]

如果宣告的長度小於陣列數目時就會噴掉啦

package main

import "fmt"

func main() {
	imarray := [3]string{"A", "B", "C", "D"}
	fmt.Println("i'm array:", imarray)
}
array index 3 out of bounds [0:3]

切片的情境

package main

import "fmt"

func main() {
	imslice := []string{"A", "B", "C", "D"}
	fmt.Println("i'm slice:", imslice)
}
i'm slice: [A B C D]

使用上是不是slice比較方便阿,可以減少攻城屍手殘沒算好陣列數目,導致系統噴掉。

以上是golang中最最基本的型態,下篇就會講到比較進階的型態

https://ithelp.ithome.com.tw/upload/images/20200912/20129515XlxpfBZYjA.png


上一篇
[DAY3]開發工具
下一篇
[DAY5]認識GO-下
系列文
欸你這週GO了嘛30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言