【GO】一个容易踩坑的内外变量屏蔽问题

 1 package main
 2 
 3 import (
 4     "errors"
 5     "fmt"
 6 )
 7 func et()(string,error){
 8     return "",errors.New("这个ERROR信息本应该被屏蔽!")
 9 }
10 func getErr()(string,error){
11     var flag int
12     flag=0
13     var err error
14     //嗨,我们封装了err产生,您可以方便的调用这个函数以方便记录err并干一些其他的事
15     var printErr = func(errInfo string) {
16         //这里可以干一些除了记录err以外的事情
17         err = errors.New(errInfo)
18     }
19     if flag==0{
20         result,err:=et()
21         if err != nil{
22             printErr("这个ERROR应该正常显示!")
23             return "",err
24         }else{
25             return result,nil
26         }
27     } else{
28         return "",nil
29     }
30 }
31 func main() {
32     _,error:=getErr()
33     fmt.Println(error)
34 }     

试问,该程序应该输出什么?

原文地址:https://www.cnblogs.com/sbhyc/p/11793297.html