zoukankan      html  css  js  c++  java
  • go语言之变量详解

    go语言之变量

    1.0、变量初识

    变量,其实就香芋给某个值设置一个昵称,此昵称代指当前值。

    在Go中变量声明的基本格式为:var 变量名 类型 = 值,例如:

    // 声明一个字符串类型的变量name,值为'qzk'
    var name string = "qzk"
    // 声明一个整型类型的变量 age, 值为18
    var age int = 18
    

    1.1. 变量简写

    为了能让变量的声明更方便,Go 还提供了一些声明变量的简化方式

    • 省略类型,格式为 var 变量名 = 值
    var name = "qzk"
    var age = 18
    
    // 再给变量赋值时已知值的类型,所以Go编译器可以自动检测到类型,故可简化编写。
    
    • 省略var 关键字,格式为:变量名 := 值(推荐这样使用)
    name := "qzk"
    age := 18
    

    上述的两种简化编写的方式必须是直接赋值操作,即:直接将赋值值给变量,否则无法简化。例如:先声明再赋值时就不能使用简化方式编写

    // 先, 声明变量
    var name = string
    // 给变量赋值
    name = 'qzk'
    

    注意:如果变量,只声明不赋值,Go内部其实会给变量默认设置值

    // int 默认值为 0
    // float 默认值为 0.0
    // bool 默认值为 false
    // string 默认值为 空字符串
    // 指针 默认值为 nil
    ....
    

    1.2 变量名要求

    对于变量名有一下几个要求和建议:

    要求:

    • 变量名由 字母、数字、下划线组成,且首个字符不能为数字。
    • 不能使用Go内置的25个关键字
    break、default、func、interface、select、case、defer、go、map、struct、chan、else、goto、package、switch、const、fallthrough、if、range、type、continue、for、import、return、var
    

    建议:

    • 变量的命名规则遵循驼峰命名规则,即首个单词小写,每个新单词的首字母大写,例如:numShipsstartDate
    • 见名知意,通过变量名就可以知道变量所代指的值,例如:nameemail

    1.3 全局和局部变量

    根据变量所在位置不同, 变量有全局和局部变量之分

    1.3.1 全局变量

    package main
    import "fmt"
    
    // 声明全局变量
    var country string = "中国"
    // 亦可使用
    // var country = "中国"
    // 不可使用
    // country := "中国"
    func main(){
      fmt.Println(country)
      country = "China"
      fmt.Println(country)
    }
    

    特别提示:Go 中的 全局变量比较特殊,

    如果全局变量首字母小写,则只能别当前包中的go文件使用,外部无法使用;

    如果首字母大写,则任意文件都可以使用全局变量

    可简单理解为:首字母大写表示共有, 首字母小写表示私有(当前包的go文件所有)

    1.3.2 局部变量

    Go中的变量有作用域之分,每个大括号就是一个作用域,每个作用域中都可以定义相关的局部变量。

    package main
    import (
    "fmt"
    )
    
    func main(){
    // 声明局部变量,再当前函数可用
      var name string = "qzk"
      fmt.Println(name)
      
      if true {
        // 声明局部变量, 再当前if中可用
        var age = 18
        fmt.Println(age)
      }
      
      // 下面的语句就会报错,因为age 再if括号的作用域中
      // fmt.Println(age)
    }
    
    
    

    1.4 因式分解

    在定义多个变量时候, 可以用过饮食分解的方式进行简化代码。

    package main
    
    import "fmt"
    
    /*
    var name = "qzk"
    var age = 18
    var gender string
    */
    
    // 在全局使用
    var (
    	name1 = "qzk"
    	age = 18
    	gender string
    )
    
    
    func main(){
    	fmt.Println(name1)
    	fmt.Println(age)
    	fmt.Println(gender)
    
    	// 在局部使用
    	var (
    		x1 = 123
    		x2 = 34
    	)
    	fmt.Println(x1)
    	fmt.Println(x2)
    }
    
  • 相关阅读:
    atitit.nfc 身份证 银行卡 芯片卡 解决方案 attilax总结
    atitit.php 流行框架 前三甲为:Laravel、Phalcon、Symfony2 attilax 总结
    Atitit.执行cmd 命令行 php
    Atitit. 图像处理jpg图片的压缩 清理垃圾图片 java版本
    atitit。企业组织与软件工程的策略 战略 趋势 原则 attilax 大总结
    atitit. 管理哲学 大毁灭 如何防止企业的自我毁灭
    Atitit.java的浏览器插件技术 Applet japplet attilax总结
    Atitit.jquery 版本新特性attilax总结
    Atitit. 软件开发中的管理哲学一个伟大的事业必然是过程导向为主 过程导向 vs 结果导向
    (转)获取手机的IMEI号
  • 原文地址:https://www.cnblogs.com/qianzhengkai/p/13743592.html
Copyright © 2011-2022 走看看