当前位置: 首页 > 面试题库 >

限制变量存储错误的范围

左丘嘉言
2023-03-14
问题内容

我有以下代码:

if entryJson, err := json.MarshalIndent(entry, "", " "); err != nil{
    log.Println(err)
} else {
    log.Println(entryJson)
}

if err := ioutil.WriteFile("text.json", entryJson, 0644); err != nil {
    log.Println(err)
}

我想尽可能地限制 err 的范围。我要面对的问题是,entryJson当我想将变量写入文件时,变量超出了范围。
处理这个问题的惯用方式是什么。我应该只重用变量 err 并在其他 if 块中检查它吗?像这样:

entryJson, err := json.MarshalIndent(entry, "", " ")
if err != nil{
    log.Println(err)
} else {
    log.Println(entryJson)
}

err = ioutil.WriteFile("text.json", entryJson, 0644)
if err != nil{
    log.Println(err)
}

这可行,但对我来说可读性较差。


问题答案:

首先,不需要隔离变量。其次,您可以在if语句中进行简写分配,例如:

entryJson, err := json.MarshalIndent(entry, "", " ")
if err != nil{
    log.Println(err)
} else {
    log.Println(entryJson)
}

if err = ioutil.WriteFile("text.json", entryJson, 0644); err != nil{
    log.Println(err)
}

// or if you want to limit the scope of err badly, this is also legal:

if err := ioutil.WriteFile("text.json", entryJson, 0644); err != nil{
    log.Println(err)
}

处理此特定示例的一种干净方法是将其放入自己的函数中并调用它:

func writeJSON(fn string, v interface{}) error {
    j, err := json.MarshalIndent(v, "", " ")
    if err != nil {
        return err
    }

    return ioutil.WriteFile(fn, j, 0644)
}

func main() {
    var test struct {
        A string
        B string
    }
    if err := writeJSON("file.json", test); err != nil {
        log.Fatal(err)
    }
}


 类似资料:
  • 我试图更好地理解一旦Android11版本发布,我将能够做什么。 我的应用程序使用提供的图像文件路径创建相册,但使用Android11,我将无法直接访问文件。 根据Android开发人员的文档,他们最近引入了权限,但我不明白如果添加了这个权限,我是否能够继续通过访问文件。 有人有主意吗??? 谢谢 2021年1月更新 我在一个Android11虚拟设备上试用了我的应用程序,它似乎可以完美地工作,即

  • 问题内容: 当我在node.js模块中执行此操作时: 去哪儿了?我的意思是:在浏览器中(如果未在函数中执行或以其他方式执行) 如果我执行此操作: 然后可以在中找到它,但这不是我想要的。 问题答案: 与浏览器不同,浏览器默认情况下将变量分配给全局空间(即窗口),而在Node中, 除非您 将变量 明确 分配给module.exports, 否则 变量的作用域为模块(文件)。 实际上,当您运行或文件中的

  • 我想限制用户最多上传4张图片。存储规则可以限制特定节点中的子节点数量?这是我的储物规则,没有儿童限制。 提前感谢

  • 我想限制用户可以上传到firebase存储路径的文件数量。以下是我的firebase存储规则: 我添加了一个列表(/images/Business/$(username)).size() 但我总是得到403,不确定“用户名”是否是全局变量,但我已经使用了不同的变量,仍然不能使它工作。

  • 问题内容: 我有一个数据库,有两个表和。表中有一个主键,表中有一个外键。 我想在表上创建一个约束,表中最多可以存储5个约束。 我需要知道这种约束的类型,以及如何通过SQL Server中的查询来完成此约束。 问题答案: 没有约束可以强制执行该规则,但是可以使用如下所示的触发器来做到这一点:

  • 我们在前两节已经了解了PHP中变量的类型和值是怎样在内核中用C语言实现的, 这一节我们将看一下内核是怎样来组织用户在PHP中定义的变量的。 有一点对我们扩展开发者来说非常棒,那就是用户在PHP中定义的变量我们都可以在一个HashTable中找到, 当PHP中定义了一个变量,内核会自动的把它的信息储存到一个用HashTable实现的符号表里。 全局作用域的符号表是在调用扩展的RINIT方法(一般都是