1. 程式人生 > 其它 >go基礎——基本資料型別

go基礎——基本資料型別

GO語言的資料型別:

1.基本資料型別:
布林型別:true,false
數值型別:整數,浮點,複數complex
字串:string
2.複合資料型別
array,slice,map,function,pointer,struct,interface,channel...

1.值型別:儲存的是數值本身,資料傳遞給其他變數時傳遞的是資料的副本。
int,float,string,bool,array,struct
2.引用型別:儲存的是資料的記憶體地址,資料傳遞時傳遞的地址。預設零值是nil
slice,map,channel

布林型別和數值型別

package main

import "fmt"

func main() {

	//1.bool
	var b1 bool
	b1 = true
	fmt.Printf("%T,%t\n", b1, b1)
	b2 := false
	fmt.Printf("%T,%t\n", b2, b2)

	//2.整數
	/*
		有符號,最高位表示符號位,0正,1負
		int8,-128到127
		int16,-32768到32767
		int32,-2147483648到2147483647
		int64,-9223372036854775808到9223372036854775807

		無符號8位整型,所有位都表示數值
		uint8,0到255
		uint16,0到65535
		uint32,0到4294967295
		uint64,0到18446744073709551615
	*/

	//通常使用int和uint,位數根據作業系統自動選擇
	//但在語法角度,int和int64不是同一種類型
	var i1 int = 1000
	var i2 int64 = 2000
	fmt.Printf("%d,%T\n", i1, i1)
	fmt.Printf("%d,%T\n", i2, i2)

	//byte:uint8的別稱
	//rune:int32的別稱
	var i3 uint8 = 100
	var i4 byte = i3
	fmt.Printf("%d,%T\n", i4, i4)

	//型別推斷,預設為int
	var i5 = 500
	fmt.Printf("%d,%T\n", i5, i5)

	//3.浮點:float32,float64
	var f1 float32 = 3.1415926
	var f2 float64 = 3.1415926
	fmt.Printf("%f,%T\n", f1, f1) //預設保留6位小數
	fmt.Printf("%f,%T\n", f2, f2)
	fmt.Printf("%.2f,%T\n", f1, f1) //保留兩位小數
	fmt.Println(f2)
}

字串

package main

import "fmt"

/*
	字串:
	1.概念:多個byte的集合,理解為一個字元序列
	2.語法:
		使用雙引號"abc","hello"
		也可以使用`abc`,`hello`

*/
func main() {

	//1.定義字串
	var s1 string = "彗星"
	var s2 string = `恆星`
	fmt.Printf("%s,%T\n",s1,s1)
	fmt.Printf("%s,%T\n",s2,s2)

	//2.單引號雙引號區別
	s3 := 'a'
	s4 := "a"
	fmt.Printf("%d,%T\n",s3,s3)	//單引號是ASCII碼,int32型別
	fmt.Printf("%s,%T\n",s4,s4)
	s5 := '天'
	fmt.Printf("%d,%T,%c,%q\n",s5,s5,s5,s5)	//單引號中文,是Unicode編碼

	//3.轉義字元
	fmt.Println("\"haha\"")
	fmt.Println(`"haha"`)
	fmt.Println("`haha`")
	fmt.Printf("hello\tworld\n")
}

資料型別轉換

package main

import "fmt"

/*
	資料型別轉換:
	go語言是靜態語言,定義、賦值、運算必須型別一致
	語法:Type(Value)
	注意:
		相容的型別才能轉換
		常數自動轉換,變數才需要手動轉換
*/
func main() {
	var a int8 = 10
	var b int16
	b = int16(a)
	fmt.Println(a, b)
}