iT邦幫忙

DAY 4
2

初學 Golang 30 天系列 第 4

初學 Golang 30 天(四)型態

Go 和你所知道的大多數語言相同,會有各種型態,如果你有學過 C 語言,這邊你可以很輕鬆的看過去,而且你會發現它跟 C 語言有許多相似之處,Go 之所以被稱為「21 世紀 C 語言不是沒有原因」,另外如果沒有學過,也別擔心,它沒有很困難,那就讓我們來認識看看有哪些型態:

數字
整數的型態很多種,以下表格是 Go 語言擁有的整數型態,以及它的範圍。

在這邊無法使用表格,用圖片代替,另外補充可能被蓋掉的文字「32 位元平台 4 位元,64 位元平台 8 位元 」。

範例

package main

import "fmt"

func main() {
fmt.Println("1 + 1 =", 1 + 1)
}

http://play.golang.org/p/N0XKLexlwp
#表格參考資料 Go 語言編程 2.3 節 變量 人民郵電出版社

浮點數
複數包涵兩種型態 float32、float64。
與其他語言相同, Go 當然也可以用浮點數。
要注意的是,如果初始化的時候沒有加小數點會被推斷為整數,另外初始化的時候沒有指定型態的話,會被自動推斷為 float64。
float64 在 Go 語言相當於 C 語言的 Double,且 float32 與 float64 是無法一起計算的,需要強制轉型。

範例

package main

import "fmt"

func main() {
var floatValue float64
floatValue = 7.0
var floatValue2 = 3.0
fmt.Println("7.0/3.0 =", floatValue/floatValue2)

var test float64
var test2 float32
test = 1.1
test2 = 2.2
fmt.Println("test + test2 =", float32(test) + test2)
}

http://play.golang.org/p/PIB7YTp_Wb

複數
複數包涵兩種型態 complex64、complex128。
我覺得算是 Go 的特色之一,其他語言很少有這種型態,一個完整的複數需要包涵實數、虛數。
如果是初始化讓 Go 自動判斷型態的型態會是 complex128,而不會是 complex64

範例

package main

import "fmt"

func main() {
var complexValue complex64
complexValue = 1.2 + 12i
complexValue2 := 1.2 + 12i
complexValue3 := complex(3.2, 12)

fmt.Println("complexValue =", complexValue)
fmt.Println("complexValue2 =", complexValue2)
fmt.Println("complexValue3 =", complexValue3)

fmt.Println("complexValue3 實數 =", real(complexValue3))
fmt.Println("complexValue3 虛數 =", imag(complexValue3))
}

http://play.golang.org/p/Srm2TkMzRo

字串
請注意字串型態無法在初始化後被修改。

範例

package main

import "fmt"

func main() {
fmt.Println("1" + "1")
fmt.Println(len("Hello World"))
fmt.Println("Hello World"[1])
fmt.Println("Hello" + "World")

a := "Hello World"
fmt.Printf("%c",a[1])
}

http://play.golang.org/p/v3TYS_t8VZ

布林
Go 語言中的布林與其他語言一致,關鍵字一樣是 bool ,可欲賦予值為 true 和 false。

範例

package main

import "fmt"

func main() {
var a bool
a = true
fmt.Println("a =", a)

b := false
fmt.Println("b =", b)

fmt.Println(true && true)
fmt.Println(true && false)
fmt.Println(true || true)
fmt.Println(true || false)
fmt.Println(!true)
}

http://play.golang.org/p/8BVcSKCdJL


上一篇
初學 Golang 30 天(三)變數
下一篇
初學 Golang 30 天(五)Coding Style
系列文
初學 Golang 30 天30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言