# 變量定義
使用var關鍵詞,變量類型卸載變量名之后
```
var a,,b,v bool
var s1,s2 string ="hello","go"
```
可以放在函數內,或直接放在包內
使用var()集中定義變量
```
var (
a int
b bool
)
```
編輯器自動決定類型
```
var f,g, h = 2,true,"h"
```
使用:=定義變量,盡量使用該方式定義。只能在函數內使用
```
var f,g, h := 2,true,"h"
```
# 數據類型
> bool,string
> (u)int,(u)int8,(u)int16,(u)int32,(u)int64,uintptr
> byte,rune
> float32,float64,complex64,complex128
沒有char,只有rune
原生支持復數類型
# 數據類型轉換
```
var a,b int =3,4
var c int =int(math.Sqrt(float64((a*a+b*b))))
```
# 定義
```
const file string ="abc.txt"
```
const數值可以作為各種類型使用
```
const a,b = 3,4
```
```
var c int=math.Sqrt(a*a+b*b)
```
# 特殊常量-枚舉類型
## 普通枚舉類型
```
const (
cpp=1
php=2
java=3
)
```
## 自增值枚舉類型
```
const (
cpp1=iota
php2
java3
)
const (
b=1<<(10*iota)
kb
mb
gb
tb
pb
)
```
# 一個main函數搞定所有
```
package main
import "fmt"
func main() {
var v_name_int int = 1
var v_name = 2
v_name_ := 3
var (
v1_string string = "this is v1"
v2 bool = true
v3_min int = -9223372036854775808
v3_max int = 9223372036854775807
v4_uint8_min uint8 = 0
v4_uint8_max uint8 = 255
v4_uint16_min uint16 = 0
v4_uint16_max uint16 = 65535
v4_uint32_min uint32 = 0
v4_uint32_max uint32 = 4294967295
v4_uint64_min uint64 = 0
v4_uint64_max uint64 = 18446744073709551615
v4_int8_min int8 = -128
v4_int8_max int8 = 127
v4_int16_min int16 = -32768
v4_int16_max int16 = 32767
v4_int32_min int32 = -2147483648
v4_int32_max int32 = 2147483647
v4_int64_min int64 = -9223372036854775808
v4_int64_max int64 = 9223372036854775807
v5 byte = 'a'
v6_float32 float32 = 2.2
v6_float64 float64 = 2.2
//定義指針*運算符不僅能取值,還可以對指向變量值
p *int
p1 = 12
//通過&運算符可以獲取指針所指向地址的值
p_addres = &p1
//通過*運算符可以獲取變量地址的原始數據,叫解引用
p_value = *p_addres
)
const c1 = "this is const"
}
```