base Types

基本型態介紹

宣告

//變量宣告
var 變量名 變量類型
var a, b *int//指针类型

var foo string
foo := "Hello"
var foo string = "Hello"

var (
  foo string = "Hello"
    bar int = 100
)

//常量宣告
常量是一個簡單值的標識符,在程序運行時,不會被修改的量。
const identifier [type] = value

new

  • new 會並且返回儲存位址 自動用 zeroed value 來初始化型別

  • 但要注意像是map/slice/chan等會是nil,直接使用可能會引發錯誤,通常會另外make來宣告使用

  • map/slice/chan 常用make宣告時就不會拿到指標,要拿到指標請用new

func main() {
	myInt := new(int)
	fmt.Println(myInt). //記憶體位置0xc00009c000
	fmt.Println(*myInt).  //初始值 0 
	fmt.Printf("%#v", myInt) //%#v 先输出结构体名字值,再输出结构体(字段名字+字段的值) (*int)(0xc00009c000)
}
  • 使用new(struct)雖然可以快速初始化,但是無法一開始就給指定內容,因此常使用&Struct{Field:xxx}來使用

型態用法

  • 值類型包括 int、float、bool、string、struct 以及數組(array)

  • 引用類型包括指針(Pointer)、切片(slice)、map、通道(chan)

  • 可以透過 fmt.Printf("Type: %T ", xx) 印出該類型的type

  • 可以通過 math.MaxInt64、math.MinInt64 的方式得到預定義的某類型最大最小值。

Zero values

  • 0 for numeric types

  • false for the boolean type

  • "" (the empty string) for strings.

  • nil for Pointer/Interface/Slice/Map/Channel/Function

Basic types

  • 基本類型如下:

bool
string
intint8int16int32int64
uintuint8uint16uint32uint64uintptr
byte // uint8 的别名
rune // int32 的别名 代表一个 Unicode 码
float32float64
complex64complex128
  • 範圍與大小

參考

Last updated