zoukankan      html  css  js  c++  java
  • Go 语言基础之变量

    由于不是纯编程零基础的教程,所以不会在这里讲述“变量”的概念,后续的文章也是。

    在 Go 语言中,定义变量主要有两种方式,一个是使用 var 关键字,另外一个就是使用 := 的方式。虽然这部分内容很简单,但是各种使用姿势还是要学会的。

    使用 var 来定义变量

    如果做过前端,那一定很熟悉 var,在 Go 中,你可以像在 JavaScript 中一样定义一个变量,如下:

    var age = 18
    

    Go 语言是强类型语言,使用 var 后会自动推断变量的类型,不需要你定义类型,但是你仍然可以在声明变量的时候定义它的类型,如这样:

    var age int = 18
    
    // 格式为:var 变量名 变量类型
    

    这里表明 age 变量是一个整型类型,关于数据类型后面会说到。需要注意的是,如果声明了类型,就不可以赋值为别的类型的值,如下面这样就会报错的:

    var age int = "18" // error
    

    age 定义为 int 类型,却赋值为字符串类型,所以报错了。

    变量可以先声明,再赋值。当声明一个变量却没有赋值时,变量会被初始化成其类型的默认值,例如: 整型和浮点型变量的默认值为 0。 字符串变量的默认值为空字符串。 布尔型变量默认为false。 切片、函数、指针变量的默认为nil

    var name string  // 声明变量却没有赋值,要同时定义类型
    fmt.Println(name)  // 打印操作,输出为空
    name = "abc"  //  赋值
    fmt.Println(name)  // "abc"
    

    这段代码的开始,我们只声明了变量 name 为字符串类型,但没有赋值,此时它的值是空字符串,等赋值操作后即可改变值。要注意的是,只声明变量而不赋值时,一定要同时指定变量类型,且后续赋值时也一定要是该类型的值,像这样是错的:

    var name  // error,变量只声明而不赋值时一定要指定类型
    name = "foo"
    

    用 var 同时定义多个变量

    var 可以一次定义多个变量:

    var a, b = 18, "hello world"
    

    如果变量是相同的类型,也可以统一指定类型:

    var a, b int = 18, 20  // 指定 a 和 b 都是 int 类型
    

    但不能给每个变量都定义不同的类型:

    var a int, b string = 18, "hi" // error
    

    我们很自然地想到这样写法,同时定义 a 为整型,b 为字符串类型,这样写成一行的定义多个变量类型的方式是不允许的,要么都不指定类型,要么都指定为同一类型。一行的不行,可以用多行的方式,你也可以这样批量定义变量:

    var (
      a int
      b string
    )
    
    // 也可以同时赋值
    var (
      a int    = 18
      b string = "hi"
    )
    

    这种方式就方便多了,不过一定要记得加上括号。

    使用 := 定义变量

    := 也叫短变量声明,它只能用在函数内部,也就是说只能定义局部变量,像这样:

    package main
    
    a := 1 // error,:= 不能用在函数外部
    
    func main() {
      b := 2 // ok
    }
    

    使用 := 无需声明类型,建议在函数内部使用这种方式,更简洁。

    匿名变量

    这里补充一个匿名变量。在有多重赋值的情况下,如果想要忽略某个值,可以使用 匿名变量(anonymous variable)。 匿名变量用一个下划线 _ 表示,例如:

    package main
    
    import "fmt" // 导入包 fmt
    
    // 这里是一个函数方法,会返回两个值
    func getInfo() (int, string) {
      return 18, "foo"
    }
    
    func main() {
      // 使用 x 来接受方法的第一个返回值。使用 _ 来忽略第二个返回值
      x, _ := getInfo()
      fmt.Println(x) // 18
    }
    

    匿名变量不占用命名空间,不会分配内存,所以匿名变量之间不存在重复声明。在实际项目中,匿名变量时常用到,应该要熟悉它。

    结尾

    学会定义变量是一门语言中比较简单的环节,自己手动敲代码练习一遍就会了,建议文中所有代码都编辑器过一遍哦。

    如有错误,欢迎指出。

  • 相关阅读:
    AngularJS特性
    FOR XML PATH 解决联接返回结果集各记录问题
    ASP.NET MVC与WebForm区别
    C#.net 获取当前应用程序所在路径及环境变量
    .net 4.0 运行时中运行.net2.0开发的程序
    混合模式程序集是针对“v2.0.50727”版的运行时生成的,在没有配置其他信息的情况下,无法在 4.0 运行时中加载该程序集
    sort() 方法用于对数组的元素进行排序
    SQL Server 表和索引存储结构
    SQL Server 数据库文件管理
    navicat 导入数据报错 --- 1153
  • 原文地址:https://www.cnblogs.com/wjaaron/p/14808848.html
Copyright © 2011-2022 走看看