• 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)
    }
    
  • 相关阅读:
    C#语法糖系列 —— 第二篇:聊聊 ref,in 修饰符底层玩法
    Excel 0x800AC472
    ArcGIS Pro 二次开发 一个问题搞了一天多
    C# 多线程的进度条
    Microsoft.CSharp.RuntimeBinder.RuntimeBinderException: “object”未包括“get_Range”的定义
    ArcGIS Pro属性表中文乱码解决
    ArcGIS Pro二次开发有ID返回Feature
    ArcGIS Pro 二次开发=创建图层并将其添加到活动地图中。
    ArcGIS Pro所有的选项卡(Tab)和分组(group)
    ArcGIS Pro右键菜单
  • 原文地址:https://www.cnblogs.com/qianzhengkai/p/13743592.html
Copyright © 2020-2023  润新知