第一篇 变量的声明与详解

在Go语言中变量是有明确类型的,它跟传统编译形语言一样属于静态类型语言,运行时编译器会自动检测变量的类型。

变量使用注意事项

  1. 在Go语言中声明的变量必须要使用,因为Go语言在编译时检查变量是否使用过,一旦出现未使用过的变量就会编译错误。

  2. 局部变量
    在函数体内声明的变量称之为局部变量,它们的作用域只在函数体内,函数的参数和返回值变量都属于局部变量

    /**
     *下面例子中定义了 a b c 三个变量,只有当main函数被调用后存在,
     * 函数调用结束后 a b c 三个局部变量会自动销毁
     */
    func main() {
    	var a int = 100
    	var b int = 200
    	var a int = a + b
    	fmt.Printf("a = %d, b = %d, c = %d\n", a, b, c)
    }
    
  3. 全局变量
    在函数体外定义的变量称为全局变量,全局变量必须 使用 var关键字定义,全局变量首字母必须要大写。全局变量只要在一个源文件中定义,在外部包中只要引入了(import)该定义文件都可以使用这个全局变量。

    // 全局变量定义示例
    var GlobalVariable string = "这是一个全局变量"
    
  4. 形式参数
    在函数中定义的参数叫做形参,在函数未被调用前,不占用任何空间,也不存储实际的值。形式参数只在函数调用时才会生效,函数调用结束后就会被销毁。

    // 形式参数会作为函数的局部变量来使用
    // n1 和 n2 都为形参,只有当 getSum函数被调用时才会为n1和n2赋值
    // 当getSum函数执行结束,n1和n2会自动销毁 
    func getSum(n1 int, n2 int) {
    
    }
    

命名方式

变量的命名规则遵循骆驼命名法,即首个单词小写,每个新单词的首字母大写,例:userName

变量初始化值

基本数据类型
 1. bool 布尔类型
 2. string 字符串
 3. int、int8、int16、int32、int64 整形
 4. uint、uint8、uint16、uint32、uint64、uintptr 无符号整形
 5. byte // uint8 的别名
 6. rune // int32 的别名 代表一个 Unicode 码
 7. float32、float64 浮点形
 8. complex64、complex128 复数类型
 所有的内存在 Go 中都是经过初始化的,当一个变量被声明之后,系统自动赋予它该类型的零值:
 int: 0
 float: 0.0 
 bool:false
 string: ""
 指针: nil 等。

声明变量方式

  1. 指定变量类型

    // var是申明变量关键字; variableName是变量名; type是指定变量的类型
    var variableName type
    
  2. 编译器推导类型的格式(不显示声明类型,根据变量值自动推断出变量类型)

    //声明一个variableName 赋值一个字符串,这时候变量类型是 string类型
    func main() {
    
    	// 在标准格式的基础上,将 int 省略后,编译器会尝试根据等号右边的表达式推导 hp 变量的类型。
    	var variableName = "string" 
    	fmt.Printf("variableName 变量的数据类型是:%T", variable)
    	// 结果:variableName 变量的数据类型是:string
    }
    
  3. 省去var关键字

    // variable是变量名,右边是给变量赋值,以字符串为例
    func main() {
    	
    	// 这是Go语言的推导声明写法,编译器会自动根据右值类型推断出左值的对应类型。
    	variable := "string"
    	fmt.Printf("variableName 变量的数据类型是:%T", variable)
    	// 结果:variableName 变量的数据类型是:string
    }
    
  4. 批量定义变量

    func main() {
    	var (
    		age int
    		name string
    		address string
    	)
    	fmt.Printf("age变量类型: %T; name变量类型: %T; address变量类型: %T", age, name, address)
    	// 结果:age变量类型: int; name变量类型: string; address变量类型: string
    }
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值