• Go-变量


    3. 变量

    变量:使用一个名称来绑定一块内存地址,该内存地址中存放的数据类型由定义变量时指定的类型决定,该内存地址里面存放的内容可以改变。

    3.1 变量的声明

    变量声明后会分配内存空间。变量声明以关键字var开头,变量类型放在变量的后面,行尾无需分号。

    • 显示完整声明:var varNmae dataType [ = value]
    • 短类型声明(只能用在函数体内部或方法内):varNmae := value
    var name string
    var age int
    
    // 批量声明
    var (
    	a string
        b int
        c bool
        d float32
    )
    
    // 短变量声明
    func main() {
        n := 10
    }
    

    3.2 变量初始化

    Go语言在声明变量的时候,会自动对变量对应的内存区域进行初始化操作。每个变量会被初始化成其类型的默认值,例如: 整型和浮点型变量的默认值为0。 字符串变量的默认值为空字符串。 布尔型变量默认为false。 切片、函数、指针变量的默认为nil

    var name string = "biao"
    
    // 类型推导 -- 编译器会根据等号右边的值来推导变量的类型
    var age = 18
    

    3.3 匿名变量

    在使用多重赋值时,如果想要忽略某个值,可以使用匿名变量(anonymous variable)。 匿名变量用一个下划线_表示

    package main
    import (
    	"fmt"	
    )
    func foo() (int, string) {
        return 10, "biao"
    }
    
    func main() {
        x, _ := foo()
        _, y := foo()
        fmt.Println("x=", x)
        fmt.Println("y=", y)
    }
    
    

    匿名变量不占用命名空间,不会分配内存,所以匿名变量之间不存在重复声明。 (在Lua等编程语言里,匿名变量也被叫做哑元变量。)

    3.4 指针

    一个指针的值是另一个变量的地址。一个指针对应变量在内存中的存储位置。任何类型的指针的零值都是nil

    x := 1
    p := &x         // p, of type *int, points to x
    fmt.Println(*p) // "1"
    *p = 2          // equivalent to x = 2
    fmt.Println(x)  // "2"
    

    如果用“var x int”声明语句声明一个x变量,那么&x表达式(取x变量的内存地址)将产生一个指向该整数变量的指针,指针对应的数据类型是*int,指针被称之为“指向int类型的指针”。如果指针名字为p,那么可以说“p指针指向变量x”,或者说“p指针保存了x变量的内存地址”。同时*p表达式对应p指针指向的变量的值。一般*p表达式读取指针指向的变量的值,这里为int类型的值,同时因为*p对应一个变量,所以该表达式也可以出现在赋值语句的左边,表示更新指针所指向的变量的值。

    3.5 new函数

    创建变量的方法是调用用内建的new函数。表达式new(T)将创建一个T类型的匿名变量,初始化为T类型的零值,然后返回变量地址,返回的指针类型为*T

    p := new(int)   // p, *int 类型, 指向匿名的 int 变量
    fmt.Println(*p) // "0"
    *p = 2          // 设置 int 匿名变量的值为 2
    fmt.Println(*p) // "2"
    

    3.6 变量的生命周期

    变量的生命周期指的是在程序运行期间变量有效存在的时间间隔。

  • 相关阅读:
    2021.1.30 刷题(滑动窗口最大值-单调队列)
    2021.1.30 刷题(括号匹配)
    2021.1.29 刷题(重复的子字符串-KMP实现)
    2021.1.28 刷题(栈、队列)
    2021.1.27 刷题(KMP字符串匹配)
    2021.1.26 学习KMP算法
    2021.1.25 刷题(四数之和)
    2021.1.24 刷题(三数之和-哈希表)
    2021.1.23 刷题(快乐数-哈希表)
    2021.1.22 刷题(用数组实现哈希表)
  • 原文地址:https://www.cnblogs.com/binliubiao/p/12984347.html
Copyright © 2020-2023  润新知