Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/go/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
String 在错误消息中包含数据的惯用方法是什么?_String_Go_Error Handling - Fatal编程技术网

String 在错误消息中包含数据的惯用方法是什么?

String 在错误消息中包含数据的惯用方法是什么?,string,go,error-handling,String,Go,Error Handling,在Go中,我遇到了将变量合并到错误消息中的不同方法。在下面的例子中,惯用的是哪种方式?有更好的选择吗 当事情开始破裂时,哪个更安全?例如,当可用内存非常少时,分配更少字节的选项更可取 哪一个更快,以防我们需要产生大量错误 完整的可运行代码可以在或官方文件中看到 除非你的内存很小,或者会产生大量的错误,否则我不会担心。就习惯用法而言,我会选择h()选项,因为它更容易阅读 这里的好处是,可以用一些简单的基准测试分配、使用的内存和速度 func BenchmarkF(b *testing.B) {

在Go中,我遇到了将变量合并到错误消息中的不同方法。在下面的例子中,惯用的是哪种方式?有更好的选择吗

当事情开始破裂时,哪个更安全?例如,当可用内存非常少时,分配更少字节的选项更可取

哪一个更快,以防我们需要产生大量错误

完整的可运行代码可以在或官方文件中看到


除非你的内存很小,或者会产生大量的错误,否则我不会担心。就习惯用法而言,我会选择
h()
选项,因为它更容易阅读

这里的好处是,可以用一些简单的基准测试分配、使用的内存和速度

func BenchmarkF(b *testing.B) {
    for i := 0; i <= b.N; i++ {
        f()
    }
}

func BenchmarkG(b *testing.B) {
    for i := 0; i <= b.N; i++ {
        g()
    }
}

func BenchmarkH(b *testing.B) {
    for i := 0; i <= b.N; i++ {
        h()
    }
}

正如您所看到的,
f()
是最快的,占用的内存最少,分配也最少。它也不值得(在我看来)额外的可读性成本。

除非你的内存非常少,或者会产生大量的错误,否则我不会担心。就习惯用法而言,我会选择
h()
选项,因为它更容易阅读

这里的好处是,可以用一些简单的基准测试分配、使用的内存和速度

func BenchmarkF(b *testing.B) {
    for i := 0; i <= b.N; i++ {
        f()
    }
}

func BenchmarkG(b *testing.B) {
    for i := 0; i <= b.N; i++ {
        g()
    }
}

func BenchmarkH(b *testing.B) {
    for i := 0; i <= b.N; i++ {
        h()
    }
}
正如您所看到的,
f()
是最快的,占用的内存最少,分配也最少。在我看来,它也不值得额外的可读性成本

BenchmarkF-8    10000000           169 ns/op          72 B/op          4 allocs/op
BenchmarkG-8    10000000           204 ns/op         120 B/op          5 allocs/op
BenchmarkH-8     5000000           237 ns/op          80 B/op          4 allocs/op