**一、Go内建变量类型**
```
bool
string
(u)int、(u)int8、(u)int16、(u)int32、(u)int64
uintptr 指针
byte
rune 字符型,32 位,类比 char
float32、float64
complex32、complex64 复数
```
`类型转换 type(varName)`
```
func typeConversion () {
var int a = 5
var b = "str"
c := 3
var int d
d = int(a / c)
fmt.Println(d, b)
}
```
**二、变量定义**
四种变量定义类型:
```
第一种完全体:var name type = value
第二种简单体:var name = value //name根据value的类型自动识别类型
第三种最简体:name := value //只适用于函数体内,name根据value的类型自动识别类型
第四种包内聚合定义: var (name1 = value1 name2 = value2 ...)
```
`变量定义`
```
func definedVariable() {
var a int = 5
var b = "str"
c, d := 3, "string"
var e int //整型默认初始值为0
var f string //字符串默认初始值为""
var g bool //bool默认初始值为false
}
//包内变量
var {
name1 = 100
name2 = "abc"
...
}
```
**三、变量和枚举类型**
两种常量定义:常量定义必须赋值
```
第一种完全体:const name type = value
第二种简单体:const name = value //name根据value的类型自动识别类型
```
`定义常量`
```
func definedConst () {
const fileName string = "readme.txt"
const a, b = 12, 5
var c int
c = int(math.Sqrt(a*a + b*b)) // 由于类型不定,所以这里不需要强转,如果定义为 const a, b int = 3, 4,则需要强转
fmt.Println(fileName, a, b, c)
}
```
枚举类型:
在Go语言中没有枚举类型,使用const来代替
```
自定义
const(
name1 = value1
name2 = value2
...
)
iota 实现枚举自增
iota 表达式枚举:const ( name1=iota表达式 name2 )
```
`定义枚举 `
```
func dedinedEnmu () {
const (
doctor_type = 0
nurse_type = 1
pharmacist_type = 2
)
fmt.Println(dcotor_type, nurse_type, pharmacist_type) // 0,1,2
const (
doctor_type = iota
nurse_type
pharmacist_type
)
fmt.Println(dcotor_type, nurse_type, pharmacist_type) // 0,1,2
}
```
有疑问加站长微信联系(非本文作者))