【问题标题】:variable scope in golanggolang中的变量范围
【发布时间】:2016-11-20 01:52:40
【问题描述】:

我是 Go 语言的新手,想在下面学习基本的基础知识,我粘贴示例。此示例中的问题是我无法访问 for 循环中的数字变量。它显示了这个错误

" 数字声明但不使用"

。请帮帮我:(

package main
import(
    "fmt"
)

func main() {    
    samlestNumber()
}

func samlestNumber()  {
    x := []int{
        48,96,86,68,
        57,82,63,70,
        37,34,83,27,
        19,97, 9,17,
    }

    //x = append(x,6,7)
    var number int = x[0]
    for _,element := range x {

        if element < x[0] {
            number = element
        }    
        fmt.Println(" :::: ",element)    
    }
}

【问题讨论】:

    标签: arrays go scope


    【解决方案1】:

    这是因为您只是向number 声明和赋值。您从未在任何地方实际使用它(即以任何方式指代它所拥有的价值)。在您的代码中,您可以安全地删除number 声明和number = x[0],它不会改变程序行为。

    然而,正确的实现会从函数中返回最小的数字:

    package main
    import(
        "fmt"
    )
    
    func main() {
        n := samlestNumber()
        fmt.Println("Smallest Number =", n)
    }
    
    func samlestNumber() int { // add a return type
        x := []int{
            48,96,86,68,
            57,82,63,70,
            37,34,83,27,
            19,97, 9,17,
        }
    
        //x = append(x,6,7)
        var number int = x[0]
        for _,element := range x {
    
            // always compare to smallest number. Even if you don't return
            // number anymore, you are still accessing the value held by
            // the number variable. So even making this change alone will
            // make the compiler error go away 
            if element < number {
                number = element
            }
    
            fmt.Println(" :::: ",element)
        }
        return number // return number
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-06
      • 1970-01-01
      • 1970-01-01
      • 2020-08-10
      相关资源
      最近更新 更多