1 基本数据类型
go的变量类型有以下几种
1)布尔型(bool:1位)
布尔类型只有true和false两个值
2)整型(int)
字节型: byte (相当于int8:1位)
字码型:rune (相当于int32:4位)
有无符号: int unit (无符号加前缀u)
根据位数: int8 int16 int32( int64
3)浮点型(float)
根据位数: float32 float64
4)字符串型(string)
string类型是使用双引号""或者反引号``引起来的字符串变量,采用UTF-8编码.
5)复数类型(complex)
根据位数 complex64 complex128
6)错误类型(error)
说明
a.不同类型,不同长度之间不允许相互转换,不能相互赋值。
b.字符串类型变量值是不可修改的。不能修改里面的字符。
c.根据平台确定,32位系统"int"和"int32"属于同一种类型,但是byte 和int8是同一种类型
1)定义变量
如果定义变量,没有赋值的话,编译时候会自动赋初始值。
var 变量名 变量类型
比如:
var x int
var x,y int
2)定义变量并赋初值
var 变量名 变量类型 = 变量值
var 变量名 = 变量值
变量名:=变量值
比如:
var x int = 1
var x,y = 1,2
x,y:=1,2
3)多变量声明或定义
var x,y,z int //声明类型相同变量
var( //声明类型不同变量
x int
y float
z bool
)
var x,y = 1,1.3 //变量赋值
x,y := 1,1.3 //变量赋值
3)变量初始化:
当使用var定义变量,会自动初始化为零值。
bool:false
整型:0
浮点型:0.0
string类型:""
指针,函数,接口,sclice,channel,map:nil
4)其他注意点。
a.Go编译器对声明却未使用的变量报错。可以使用_变量代替
b._为特殊的变量名,任何赋给其的值都会被抛弃。
3 常量
1)使用const声明常量,声明是可省略类型
const 常量名 变量类型 = 变量值
const 常量名 = 变量值 (省略类型)
例如
const x int = 2
const y = 2
2)枚举值
说明:可使用itoa来代表,每次使用从0加1.例如
const(
x = iota
y = iota
z = iota
)
则x,y,z分别为0,1,2。必须放在()才会递增。
3)分组。多个定义可以使用分组,如下:
var (
xm = 1
y = 2
)
const(
xm = 1
y = 2
)
说明:
常量不支持后缀。如L,F等
4 类型转换
1)不支持隐式转换。go语言不会对不同类型变量做任何隐式转换。
2) 只支持少数几种类型的强制转换。
允许的转换
1)string转为字节,string转为int slice
[]byte(str) 可以将字符串类型转为字节类型
[]int(str) 可以将字符串类型转为int slice类型
2)字节转为string
string(b) 可以将字节类型转为字符串类型
3)int slice转为string
string(intslice) 可以将int slice类型转为字符串类型
4)整数互转
unit8(intx)
5)整数,浮点互转
int(floatx) //会截断小数字部分
float(intx)
6)自定义转为
如果2个类型有相同字段。尝试可以互相转换。
整数字面
十进制数字面 = { 十进制数字 } .
八进制数字面 = "0" + { 八进制数字 } .
十六进制数字面 = "0" + ( "x" | "X" ) + { 十六进制数字 } .
浮点数字面 = 十进制数 "." [ 十进制数 ] [ 指数E ] |
十进制指数E |
"." 十进制数 [ 指数E ] .
十进制数 = 十进制数字 { 十进制数字 } .
指数E = ( "e" | "E" ) [ "+" | "-" ] 十进制数 .
go的变量类型有以下几种
1)布尔型(bool:1位)
布尔类型只有true和false两个值
2)整型(int)
字节型: byte (相当于int8:1位)
字码型:rune (相当于int32:4位)
有无符号: int unit (无符号加前缀u)
根据位数: int8 int16 int32( int64
3)浮点型(float)
根据位数: float32 float64
4)字符串型(string)
string类型是使用双引号""或者反引号``引起来的字符串变量,采用UTF-8编码.
5)复数类型(complex)
根据位数 complex64 complex128
6)错误类型(error)
说明
a.不同类型,不同长度之间不允许相互转换,不能相互赋值。
b.字符串类型变量值是不可修改的。不能修改里面的字符。
c.根据平台确定,32位系统"int"和"int32"属于同一种类型,但是byte 和int8是同一种类型
1)定义变量
如果定义变量,没有赋值的话,编译时候会自动赋初始值。
var 变量名 变量类型
比如:
var x int
var x,y int
2)定义变量并赋初值
var 变量名 变量类型 = 变量值
var 变量名 = 变量值
变量名:=变量值
比如:
var x int = 1
var x,y = 1,2
x,y:=1,2
3)多变量声明或定义
var x,y,z int //声明类型相同变量
var( //声明类型不同变量
x int
y float
z bool
)
var x,y = 1,1.3 //变量赋值
x,y := 1,1.3 //变量赋值
3)变量初始化:
当使用var定义变量,会自动初始化为零值。
bool:false
整型:0
浮点型:0.0
string类型:""
指针,函数,接口,sclice,channel,map:nil
4)其他注意点。
a.Go编译器对声明却未使用的变量报错。可以使用_变量代替
b._为特殊的变量名,任何赋给其的值都会被抛弃。
3 常量
1)使用const声明常量,声明是可省略类型
const 常量名 变量类型 = 变量值
const 常量名 = 变量值 (省略类型)
例如
const x int = 2
const y = 2
2)枚举值
说明:可使用itoa来代表,每次使用从0加1.例如
const(
x = iota
y = iota
z = iota
)
则x,y,z分别为0,1,2。必须放在()才会递增。
3)分组。多个定义可以使用分组,如下:
var (
xm = 1
y = 2
)
const(
xm = 1
y = 2
)
说明:
常量不支持后缀。如L,F等
4 类型转换
1)不支持隐式转换。go语言不会对不同类型变量做任何隐式转换。
2) 只支持少数几种类型的强制转换。
允许的转换
1)string转为字节,string转为int slice
[]byte(str) 可以将字符串类型转为字节类型
[]int(str) 可以将字符串类型转为int slice类型
2)字节转为string
string(b) 可以将字节类型转为字符串类型
3)int slice转为string
string(intslice) 可以将int slice类型转为字符串类型
4)整数互转
unit8(intx)
5)整数,浮点互转
int(floatx) //会截断小数字部分
float(intx)
6)自定义转为
如果2个类型有相同字段。尝试可以互相转换。
整数字面
十进制数字面 = { 十进制数字 } .
八进制数字面 = "0" + { 八进制数字 } .
十六进制数字面 = "0" + ( "x" | "X" ) + { 十六进制数字 } .
浮点数字面 = 十进制数 "." [ 十进制数 ] [ 指数E ] |
十进制指数E |
"." 十进制数 [ 指数E ] .
十进制数 = 十进制数字 { 十进制数字 } .
指数E = ( "e" | "E" ) [ "+" | "-" ] 十进制数 .
有疑问加站长微信联系(非本文作者)