zoukankan      html  css  js  c++  java
  • <1>Golang基础进阶——变量

    Golang变量

    1. 声明变量

    1 var a int
    2 var b string
    3 var c []float32
    4 var d func() bool
    5 var e struct{
    6     x int
    7 }

    2. 变量的几种声明形式

    2.1. 标准格式

    var 变量名 变量类型

    2.2. 批量格式

    var (
        var a int
        var b string
        var c []float32
        var d func() bool
        var e struct{
            x int
        }
    )

    3. 初始化变量

    Go语言再声明变量时,自动对变量对应的内存区进行初始化操作。每个变量会初始化其默认值:

    • 整型和浮点型变量的默认值为0
    • 字符串变量的默认值为空字符串
    • 布尔型变量默认为bool
    • 切片、函数、指针变量的默认为nil

     3.1. 标准格式

    var 变量名 类型 = 表达式
    
    例如:
    var hp int = 100
    

    3.2. 编译器推导式类型的格式

    在标准格式基础上,省去int编译器会尝试根据等号右边的表达式推导hp变量的类型。

    var hp2 = 100

     示例:

    package main
    import "fmt"

    var attack = 40 var defence = 20 // damageRate 如果不指定变量类型则为float64 var damageRate float32 = 0.17 var damage = float32(attack-defence) * damageRate func main() { fmt.Println(damage) }

    3.3. 短变量声明并初始化

    package main
    
    import "fmt"
    
    func main() {
        attack := 40
        fmt.Println(attack)
    }

     注意:由于使用了" := ",而不是赋值的 " = ",因此推导声明写法的变量必须是没有定义过的变量。

     如果hp已经被声明过,但依然使用" := "时编译器会报错,代码如下:

    package main
    
    import "fmt"
    
    func main() {
        var attack int
        attack := 40
        fmt.Println(attack)
    }
    no new variables on left side of :=

    短变量的声明在开噶中的例子较多,比如:

    conn, err := net.Dial("tcp","127.0.0.1:8080")

    net.Dial 是按照指定协议和地址发起的网络连接,这个函数有两个返回值,一个是连接对象,一个是err对象。如果是标准格式将会变成:

    var conn net.Conn
    var err error
    conn, err = net.Dial("tcp","127.0.0.1:8080")

    在多个短变量声明和赋值中,至少有一个新声明的变量出现在左值中,即使其他变量名可能是重复声明的,编译器也不会报错,代码如下:

    conn, err := net.Dial("tcp", "127.0.0.1:8080")
    conn2, err := net.Dial("tcp", "127.0.0.1:8080")

     3.4. 多重赋值

    func main() {
    var w1, w2 int
    w1, w2 = 1, 2
    fmt.Println(w1, w2)
    }

    4. 匿名变量

    匿名变量的表现是一个" _ "下划线。匿名变量不占用命名空间不会分配内存。匿名变量与匿名变量之间也不会因为多次声明而无法使用。

    
    
    package main

    import "fmt"

    func GetData() (int, int) {
    return 100, 200
    }

    func main() {
    a, _ := GetData()
    _, b := GetData()

    fmt.Println(a, b)

    }


    // 代码输出如下:
    100 200
    加油,你们是最棒的!
  • 相关阅读:
    每日一题 为了工作 2020 0412 第四十一题
    每日一题 为了工作 2020 04011 第四十题
    每日一题 为了工作 2020 0410 第三十九题
    每日一题 为了工作 2020 0409 第三十八题
    每日一题 为了工作 2020 0408 第三十七题
    每日一题 为了工作 2020 0407 第三十六题
    每日一题 为了工作 2020 0406 第三十五题
    每日一题 为了工作 2020 0405 第三十四题
    学习总结(二十四)
    学习总结(二十三)
  • 原文地址:https://www.cnblogs.com/Wshile/p/12614430.html
Copyright © 2011-2022 走看看