GO入门——2. 变量

1 基本类型

  • 零值并不等于空值,而是当变量被声明为某种类型后的默认值,

    通常情况下值类型的默认值为0,bool为false,string为空字符串,引用为nil。

1.1 布尔类型

  • 关键字:bool
  • 长度:1字节
  • 取值范围:true, false
  • 注意事项:不可以用数字代表true或false
  • 默认值为false

1.2 整型类型

1.2.1 整型

  • int/uint 根据运行平台可能为32或64位
  • int8/uint8(byte) 长度1字节,uint别名byte
  • int16/uint16 长度2字节
  • int32(rune)/uint32 长度4字节
  • int64/uint4 长度8字节
  • uintptr 足够保存指针的 32 位或 64 位整数型

1.2.1 浮点型

  • float32 长度4字节,小数精确到7位
  • float64 长度8字节,小数精确到15位

1.3 复数类型

  • complex64 长度8字节
  • complex128 长度16字节

1.4 其他类型

  • array
  • struct
  • string

1.5 引用类型

  • slice
  • map
  • chan

1.6 接口类型

  • interface

1.7 函数类型

  • func

1.8 指针

在Go当中不

支持指针运算以及”->”运算符,而直接采用”.”选择符来操作指针

目标对象的成员

  • 操作符”&”取变量地址,使用”*”通过指针间接访问目标对象
  • 默认值为 nil 而非 NULL

2 声明与赋值

2.1 单个变量的声明与赋值

  • 变量的声明格式:var <变量名称> <变量类型>
  • 变量的赋值格式:<变量名称> = <表达式>
  • 声明的同时赋值:var <变量名称> [变量类型] = <表达式>
var a int   //变量声明
a = 123 //变量赋值
//声明同时赋值
var b int = 12
//省略类型,系统自动推断
var c = 12
//局部变量的简写
d := 12

2.2 多个变量的声明与赋值

  • 全局变量的声明可使用 var() 的方式进行简写
  • 全局变量的声明不可以省略 var,但可使用并行方式
  • 所有变量都可以使用类型推断
  • 局部变量不可以使用 var() 的方式简写,只能使用并行方式
var (
//常规声明与赋值
a = "hello"
//并行方式并自动推断类型
b , c = 1 , 2
// d := 1 编译错误,全局变量不能用:=
) //并行声明多变量
var a,b,c,d int
//并行赋值
a,b,c,d = 1,2,3,4
//并行声明与赋值
var e,f,g int = 1,2,3
//省略类型,并行声明与复制类型自动推断
var i,j,k = 1,2,3
//多个变量声明与复制的最简单写法
a,b,c := 1,"hello",2

2.3 变量的类型转换

  • Go中不存在隐式转换,所有类型转换必须显式声明
  • 转换只能发生在两种相互兼容的类型之间
  • 类型转换的格式:
	<ValueA> [:]= <TypeOfValueA>(<ValueB>)
//相互兼容的类型可以通过类型转换
var a float32 = 1.0
b:=int(a) //编译错误
var c bool = true
d:=int(c)

3 常量

3.1 常量的定义

  • 常量的值在编译时就已经确定
  • 常量的定义格式与变量基本相同
  • 等号右侧必须是常量或者常量表达式
  • 常量表达式中的函数必须是内置函数
//定义单个常量
const a int = 1
const b = 'A'
const(
c = 1
d = "hello"
len = len(d)
) //定义多个常量
const i,j,k = 1,2,3
const(
x,y,z = "1",2,"3"
)

3.2 常量的初始化规则与枚举

  • 在定义常量组时,如果不提供初始值,则表示将使用上行的表达式
  • iota是常量的计数器,从0开始,组中每定义1个常量自动递增1
  • 通过初始化规则与iota可以达到枚举的效果
  • 每遇到一个const关键字,iota就会重置为0
const (
//a和b都为“A”
a = "A"
b
//c,d分别为2,3
c = iota
d
//e为65
e = 'A'
)
const(
//e,f分别为0和1
e = iota
f
)
上一篇:用scanf输入字符串


下一篇:2016.2.24 利用用户控件和委托完美解决快速选择txbbox