0
点赞
收藏
分享

微信扫一扫

GO学习-变量

变量的定义

变量:赋值后,可以改变值的标识符。 建议采用驼峰命名法。


var a // 错误,go是强类型语言 此处没有声明类型也无法推测类型
var b int // 正确,声明了类型,值会自动赋为该类型的零值
var c, d int // 正确,声明连续的同类型变量,可以一并声明,会自动赋为该类型的零值
var b = 200 // 错误,b多次声明,第二行已经声明过了

// 初始化:声明时一并赋初值
var a int = 100 // 正确,标准的声明,并初始化
var b = 200 // 正确,编译根据等式右值推导左边变量的类型
var c = nil // 错误,非法,nil不允许这样用
var d, e int = 11, 22 //正确,批量声明时,值也一一对应初始化
var a, b = 1, "22222"
// 用var声明,立即赋值,或之后赋值
var b int // 正确,只声明,会自动赋为该类型的零值
b = 200
b = 300
b = "4" // 错误,类型错误
// 批量赋值
var a int, b string // 错误,批量不能这么写
var ( // 正确,a、b类型知道了,可以用零值
a int
b string
)
var ( // 错误,变量必须有类型,但没有给类型,也不能使用值来推导类型
a
b
)
var a int, b string = 111, "abc" // 错误,多种类型不能这么写,语法不对
var (
a int = 111
b string = "abc"
) // 正确,建议批量常量、变量都这么写
var (
a = 111
b = "abc"
) // 正确,会根据等式右边的值进行类型推导
// 短格式 Short variable declarations
// _ 空白标识符,或称为匿名变量
a := 100
b, c := 200, "xyz"

// 交换
d, e := 1, 8
d, e = e, d
d, _, f := func() (int, string, bool) { return 300, "ok", true }()

_ 空白标识符

空白标识符它不会分配内存,不占名词空间 为匿名变量赋值,其值会被抛弃,因此,后续代码中不能使用匿名变量的值,也不能使用匿名变量 为其他变量赋值

短格式定义

  • 使用 := 定义变量并立即初始化
  • 只能用在函数中,不能用来定义全局变量
  • 不能提供数据类型,由编译器来推断

零值

变量已经被声明,但是未被显式初始化,这是变量将会被设置为零值。

  • int为0
  • float为0.0
  • bool为false
  • string为空串""(注意是双引号)
  • 指针类型为nil

变量可见性

包标识符

在Go语言中,在.go文件中的顶层代码中,定义的标识符称为包级标识符。

  • 首字母大写作为包导出标识符,首字母小写作为包内可见标识符
  • const定义包级常量,必须在声明时初始化
  • var定义包级变量
    • 可以指定类型,也可以使用无类型常量定义
    • 延迟赋值必须指定类型,不然没法确定零值
// 无类型常量定义
var a = 20 // int
var b = 3.14 // float64
//延迟初始化
var (
name string
age int
)

  • 有相关关系的,可以批量定义在一起
  • 一般声明时,还是考虑“就近原则”,尽量靠近第一次使用的地方声明
  • 不能使用短格式定义

局部标识符

定义在函数中,包括main函数,这些标识符就是局部标识符。

举报

相关推荐

0 条评论