Go語言之旅:基本型別
原文地址:https://learn-linux.readthedocs.io
歡迎關注我們的公眾號:小菜學程式設計 (coding-fan)
Go 內建了以下基本型別:
-
布林
- bool
-
字串
- string
-
整數
- int int8 int16 int32 int64
- uint uint8 uint16 uint32 uint64
-
位元組
- byte , uint8 的別名
-
Unicode
- rune , int32 別名
-
浮點
- float32 float64
-
複數
- complex64 complex128
package main
import (
"fmt"
"math/cmplx"
)
var (
ToBe bool = false
MaxInt uint64 = 1 << 64 -1
z complex128 = cmplx.Sqrt(-5 +12i)
)
func main() {
fmt.Printf("Type: %T Value: %v\n", ToBe, ToBe)
fmt.Printf("Type: %T Value: %v\n", MaxInt, MaxInt)
fmt.Printf("Type: %T Value: %v\n", z, z)
}
執行結果如下:
$ go run basic-types.go
Type: bool Value: false
Type: uint64 Value: 18446744073709551615
Type: complex128 Value: (2+3i)
例子展示了幾種不同型別變數的用法。 注意到,跟 import語句 一樣,變數申明可以批量寫到一個程式碼塊裡。
一般來說,int 、 uint 以及 uintptr 型別在 32
位機器上是 32
位長; 在 64
位機器上則是 64
位長。 需要使用整數時, int
型別是首選, 除非你有特別的理由一定要用 定長 或者 無符號 型別。
零值
變數申明時沒有顯式賦初始值,則預設是“ 零 ”。
不同的型別有不同的“ 零 ”:
- 對於數值型別是
0
; - 對於布林型別是
false
; - 對於字串型別是
""
(空字串);
package main
import "fmt"
func main() {
var i int
var f float64
var b bool
var s string
fmt.Printf("%v %v %v %q\n", i, f, b, s)
}
執行結果如下:
$ go run zero.go
0 0 false ""
型別轉換
表示式 ( expression ) T(v)
將值 v
轉換成型別 T
, 這就是所謂的 型別轉換 ( type conversions )。
這是一些數值型別轉換:
var i int = 42
var f float64 = float64(i)
var u uint = uint(f)
或者簡寫成:
i := 42
f := float(i)
u := uint(f)
跟 C 語言有所不同, Go 在不同型別之間賦值,需要顯式型別轉換。 不信,將下面例子中 float64
和 unit
型別轉換移除,看看發生什麼?
package main
import (
"fmt"
"math"
)
func main() {
var x, y int = 3, 4
var f float64 = math.Sqrt(float64(x*x + y*y))
var z uint = uint(f)
fmt.Println(x, y, z)
}
執行結果如下:
$ go run type-conversions.go
3 4 5
型別推理
變數型別通過右邊的值推理而來。
如果申明右邊的值是有型別的,那麼新變數也是一樣的型別:
var i int
j := i // j is an int as well
如果右邊只是一個數值常量,沒有具體型別,那麼新變數可能是 int 、 float64 以及 complex128 三種型別中的一種,取決於常量的精度。
i := 42 // int
f := 3.142 // float64
g := 0.867 + 0.5i // complex128
接下來做個實驗吧! 改變例子中 v
的初始值,觀察它是如何影響變數型別的:
package main
import "fmt"
func main() {
v := 42 // change me!
fmt.Printf("v is of type %T\n", v)
}
下一步
訂閱更新,獲取更多學習資料,請關注我們的 微信公眾號 :
相關文章
- GO語言————4.5 基本型別和運算子Go型別
- 6.Go語言基本資料型別Go資料型別
- Go語言學習(4) - 基本資料型別Go資料型別
- GO語言學習——基本資料型別字串Go資料型別字串
- go語言——資料型別Go資料型別
- go語言資料型別-基礎型別Go資料型別
- Go 基本型別Go型別
- Go 語言型別系統詳解Go型別
- GO語言————8.4 map 型別的切片Go型別
- go語言資料型別轉換Go資料型別
- 概念區別 【編譯型語言與解釋型語言、動態型別語言與靜態型別語言、強型別語言與弱型別語言】編譯型別
- Go語言HTTP/2探險之旅GoHTTP
- C語言進階——基本資料型別01C語言資料型別
- Python語言基礎(三):基本資料型別Python資料型別
- GO型別斷言Go型別
- GO語言基礎(結構+語法+型別+變數)Go型別變數
- 語言型別介紹及其Python的語言型別型別Python
- 計算機語言:編譯型/解釋型、動態語言/靜態語言、強型別語言/弱型別語言計算機編譯型別
- 第一篇 C/C++基本語言型別C++型別
- 解釋型語言、編譯型語言 區別編譯
- NDK探究之旅《二》——C語言的基本認識C語言
- Go語言的識別符號、關鍵字、字面量、型別Go符號型別
- Go語言高階資料型別之指標篇Go資料型別指標
- 兄弟連go教程(3)基本型別Go型別
- 小白學習Golang(三)Go語言基本語法Golang
- GO語言————4.2 Go程式的基本結構和要素Go
- 【R語言入門】R語言中的變數與基本資料型別R語言變數資料型別
- go語言簡單入門--常識和資料型別Go資料型別
- 《Go 語言程式設計》讀書筆記 (一)基礎型別和複合型別Go程式設計筆記型別
- Go 基礎之基本資料型別Go資料型別
- 換個角度帶你學C語言的基本資料型別C語言資料型別
- 【Go語言繪圖】gg 庫的基本使用Go繪圖
- js基本語法之 值型別(資料型別)(變數型別)JS資料型別變數
- Kotlin的基本語法和型別Kotlin型別
- C語言資料型別C語言資料型別
- C語言程式設計入門之--第四章C語言基本資料型別C語言程式設計資料型別
- 淺談強型別語言與弱型別語言,歡迎大家來點評型別
- 【每日知識】go語言基本語法 2018-06-09Go