美文网首页📗Go语言:基础大全
Go语言:"" 与 `` 包裹字符串的区别

Go语言:"" 与 `` 包裹字符串的区别

作者: 白祤星 | 来源:发表于2019-06-21 13:13 被阅读8416次

    "" 与 `` 包裹字符串的区别


    解析:

    • 使用 "" 包裹的字符串 会解析 字符串中的 转义符
    • 使用 `` 包裹的字符串 不会解析 字符串中的 转义符

    性能:

    • 使用 "" 包裹的字符串 性能 比较慢极慢(由 转义符字符串的长度 决定)
    • 使用 `` 包裹的字符串 性能 极快

    说明:

    • 字符串 实际上是 字符数组(学过 其他编程语言 的可能都知道,据我所知 GoLang 的书籍都 没讲过没重点讲
    • 解析遍历 整一个 字符串 (字符数组),寻找可以 解析转义符不管 原先字符串里 有没有 转义符,都会 遍历一次
    • 不解析 则会 直接输出

    测试用的代码实例


    package main
    
    import "time"
    
    func main() {
        str1 := ""    // 用于保存 "" 包裹的字符串
        str2 := ``    // 用于保存 `` 包裹的字符串
        timer := 1000 // 统一循环次数
        i := timer    // 计数器
    
        t1 := time.Now().UnixNano()
        for i > 0 {
            str1 += "测试\n测试\n测试\n测试\n测试\n测试\n"
            // str1 += "测试测试测试测试测试测试测试"
            i--
        }
        t2 := time.Now().UnixNano()
        println(`"" 所消耗的时间:`, t2-t1)
    
        i = timer // 重置计数器
        t3 := time.Now().UnixNano()
        for i > 0 {
            str2 += `测试` + "\n" + `测试` + "\n" + `测试` + "\n" +
                `测试` + "\n" + `测试` + "\n" + `测试` + "\n"
            // str2 += `测试测试测试测试测试测试测试`
            i--
        }
        t4 := time.Now().UnixNano()
        println("`` 所消耗的时间:", t4-t3)
    }
    

    双方有转义符要转译的情况下 - 输出结果:

    "" 所消耗的时间: 4986900
    `` 所消耗的时间: 1996200
    
    • 时间比:2.5 : 1

    双方没有转义符要转译的情况下 - 输出结果:

    "" 所消耗的时间: 3988900
    `` 所消耗的时间: 1994300
    
    • 时间比:2 : 1

    相关文章

      网友评论

        本文标题:Go语言:"" 与 `` 包裹字符串的区别

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