1. 程式人生 > >Go程式設計基礎03-型別與變數

Go程式設計基礎03-型別與變數

Go基本型別

型別 長度 取值範圍 注意事項 零值(即預設值)
布林型bool 1位元組 true/false 不能使用數字代替 false
整型int/uint 根據執行平臺可能為32位或64位 0
8位整型int8/uint8 1位元組 -128-127/0-255 0
位元組型byte(uint8別名) 用法等同於無符號的8位整型 0
16位整型int16/uint16 2位元組 -32768-32767/0-65535 0
32位整型int32(rune別名)/uint32 4位元組 rune常用於Unicode,用法等同於有符號的32位整型 0
64位整型int64/uint64 8位元組 0
浮點型float32/float64 4/8位元組 小數位精確到7/15位小數位 0
複數complex64/complex128 8/16位元組 0
足夠儲存指標的32位或64位整數型uintptr 0

範例:驗證基本型別零值和最大最小值

package main

import (
	"fmt"
	"math"
)

func main() {
	var a int
	fmt.Println(a) // 0
	var b float32
	fmt.Println(b) // 0
	var c bool
	fmt.Println(c) // false
	var d byte
	fmt.
Println(d) //0 // go中的math包可以取得基本型別的最大值和最小值 fmt.Println(math.MaxFloat32) }

變數

單個變數的宣告與賦值

宣告格式:var 變數名 變數型別 賦值格式:變數名 = 表示式 宣告的同時賦值:var 變數名 變數型別 = 表示式

package main

import (
	"fmt"
	)

func main() {
    // 先聲明後賦值多用於全域性變數宣告
	var a int // 宣告變數
	a = 11    // 變數賦值
	fmt.Println(a)

	// 宣告的同時並賦值
	var b int = 12
	fmt.
Println(b) // 宣告時省略型別,由系統推斷 var c = false fmt.Println(c) // 簡短宣告,僅用於區域性變數 d := 18.9 fmt.Println(d) }

多個變數的宣告與賦值

  • 全域性變數宣告可使用var()的方式簡寫
  • 全域性變數的宣告不能省略var,但可以使用並行方式
  • 所有變數都能省略型別,由系統推斷
  • 區域性變數不能使用var()的方式簡寫,只能使用並行方式
package main

import (
	"fmt"
	)

var (
	// 常規方式
	aa = 123
	// 並行宣告
	bb, cc = 56, false
)

func main() {
	// 多個變數宣告
	var a, b int
	// 多個變數賦值
	a, b = 11, 13
	fmt.Println(a + b)
	
	// 多個變數宣告的同時賦值
	var c, d int = 6, 7
	fmt.Println(c + d)
	// 多個變數宣告時省略型別
	var e, f = 8, 1
	fmt.Println(e + f)
	// 多個變數簡短宣告
	g, h := 11, 15
	fmt.Println(g + h)
}

變數的型別轉換

  • Go中不存在隱式轉換(即自動轉換),所有型別轉換必須顯式宣告(即強制轉換)
  • 轉換隻能發生在兩種互相相容的型別之間
  • 型別轉換格式:valueA [:]= TypeofValueA (valueB)
package main

import (
"fmt"
)

func main() {
	// 整數型與浮點型相容,可以進行型別轉換
	var a float32 = 100.1
	fmt.Println(a) // 100.1
	b := int(a)
	fmt.Println(b) // 100
}