登录
首页 >  Golang >  Go问答

在 else 语句中声明的变量未被使用将会产生编译错误

来源:stackoverflow

时间:2024-03-03 19:42:24 112浏览 收藏

最近发现不少小伙伴都对Golang很感兴趣,所以今天继续给大家介绍Golang相关的知识,本文《在 else 语句中声明的变量未被使用将会产生编译错误》主要内容涉及到等等知识点,希望能帮到你!当然如果阅读本文时存在不同想法,可以在评论中表达,但是请勿使用过激的措辞~

问题内容

代码如下:https://play.golang.org/p/h5x2lggpbrl

package main

import (
    "fmt"
)

func main() {
    var x bool
    m := map[int]bool{1: false}

    if 1 == 2 {
        x = true
    } else {
        x, ok := m[1]
        if !ok {
            fmt.Printf("error")
            return
        }
    }

    fmt.Printf("%t", x)
}

导致 ./prog.go:14:3: x 已声明但未使用

我希望它能够编译,因为最后一行使用了 x。

有人可以解释一下这里的范围规则吗?


解决方案


您使用 := 运算符,该运算符在第 14 行中引入了两个新变量:xokx 隐藏第 8 行中声明的 x

要解决此问题,您必须使用 = 而不是 :=。为此,您必须在分配 ok 之前预先声明它,如下所示:

...
var ok bool
x, ok = m[1]
...

理论要掌握,实操不能落!以上关于《在 else 语句中声明的变量未被使用将会产生编译错误》的详细介绍,大家都掌握了吧!如果想要继续提升自己的能力,那么就来关注golang学习网公众号吧!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>