zoukankan      html  css  js  c++  java
  • Go-err is shadowed during return

    where?

      Go程序函数中在通过 return关键字返回的时候,报错

    why?

      变量作用域的问题,在子作用域定义一个上层作用域的同名的变量

    package main
    
    import (
    	"errors"
    	"log"
    )
    
    func main() {
    	Count(10)
    }
    
    func Count(num int) (err error) {
    	// 函数中定义了一个 err变量
    	if num <= 0 {
    		// if分支中又重新定义了一个err变量
    		err := errors.New("num数不合法")
    		log.Fatalln(err)
    		// 直接返回,并没有返回参数,在子作用域中,并不能直接返回上一层定义作用域中返回变量
    		// 也就是说命名参数返回,只能返回同一级别作用域下参数,不是同一级别作用域参数需要指明返回参数值
    		return
    		// 正确返回
    		//return err
    	}
    	// 同一级别命名参数作用域,可以直接返回
    	return
    }
    

      

    way?

      同一级别作用域命名参数可以直接通过 return返回,不需要接参数,而不是同一级别作用域返回的时候,函数要求返回的参数跟在return后面

  • 相关阅读:
    流程控制语句
    第一周考点
    8.6
    8.5
    自用论文排版组合 = LyX2.2.2 + TeXLive2016
    解析几何图解
    概率论与数理统计图解.tex
    硕士研究生入学考试复试试卷答案.tex
    概率论与数理统计图解
    一月7日
  • 原文地址:https://www.cnblogs.com/2bjiujiu/p/9039862.html
Copyright © 2011-2022 走看看