美文网首页
go语言中的小技巧

go语言中的小技巧

作者: golang推广大使 | 来源:发表于2019-03-20 23:17 被阅读0次

    在几种罕见的场景中需要使用括号来使代码编译正常。

    package main
    
    type T struct{x, y int}
    
    func main() {
        // Each of the following three lines makes code fail to compile.
        // Some "{}" confuse compilers.
        /*
        if T{} == T{123, 789} {}
        if T{} == (T{123, 789}) {}
        if (T{}) == T{123, 789} {}
        var _ = func()(nil) // nil is viewed as a type
        */
    
        // We must add parentheses like the following two lines to
        // make code compile okay.
        if (T{} == T{123, 789}) {}
        if (T{}) == (T{123, 789}) {}
        var _ = (func())(nil) // nil is viewed as a value
    }
    

    两个errors.New函数使用同样的参数调用产生的两个error值并不相等

    原因在于errors.New函数将会拷贝传入的字符串参数并使用一个指向这个拷贝的字符串指针作为返回的error值的动态值。两个不同的调用将会产生两个不同的指针

    相关文章

      网友评论

          本文标题:go语言中的小技巧

          本文链接:https://www.haomeiwen.com/subject/uooxvqtx.html