码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 那些年,我们追过的Go BUG


    🌷🍁 博主猫头虎 带您 Go to New World.✨🍁
    🦄 博客首页——猫头虎的博客🎐
    🐳《面试题大全专栏》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~🌺
    🌊 《IDEA开发秘籍专栏》学会IDEA常用操作,工作效率翻倍~💐
    🌊 《100天精通Golang(基础入门篇)》学会Golang语言,畅玩云原生,走遍大小厂~💐

    🪁🍁 希望本文能够给您带来一定的帮助🌸文章粗浅,敬请批评指正!🍁🐥

    文章目录

    • 那些年,我们追过的Go BUG 🐞
      • 摘要
      • 引言
      • 正文
        • 1. 接口的零值与nil 📝
        • 2. Goroutines 的陷阱 🧮
        • 3. 切片的后背 📊
        • 4. 变量声明的小细节 😂
      • 总结
      • 参考资料
    • 原创声明

    那些年,我们追过的Go BUG 🐞

    摘要

    你好,我是猫头虎,一位Go语言的热忱拥趸!🐅 在编程的旅程中,Go(也被称为Golang)为我们带来了并发的优雅和静态类型的简洁。但你是否也曾被Go的某些特性或bug所困扰,而后又发现其实解决方法就在眼前?这篇文章,我将分享一些在Golang开发中的有趣bug及其解决方法,希望这篇文章能够在搜索中为正在学习Go的你带来一些实用的建议和启示!🚀

    在这里插入图片描述

    引言

    Go语言,以其简洁的语法、出色的并发模型和强大的标准库,吸引了众多开发者。但即便如此,我们在Go的开发旅程中,也难免会遇到一些难题和坑。

    正文

    在这里插入图片描述

    1. 接口的零值与nil 📝

    在Go中,即使一个接口的动态值为nil,接口自身也不一定等于nil。这常常导致了一些意想不到的结果。

    type MyInterface interface {
        DoSomething()
    }
    
    var a *int = nil
    var i MyInterface = a
    
    if i == nil {
        fmt.Println("i is nil")
    } else {
        fmt.Println("i is not nil") // 这里会被打印
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    2. Goroutines 的陷阱 🧮

    Goroutines 是 Go 的一大特色,但是在使用它时,我们需要注意闭包中变量的捕获。

    for i := 0; i < 3; i++ {
        go func() {
            fmt.Println(i)
        }()
    }
    // 可能会输出: 3 3 3 而不是 0 1 2
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    3. 切片的后背 📊

    切片是Go中非常强大的数据结构,但在使用它的时候,我们需要注意其背后的数组和容量。

    original := []int{1, 2, 3, 4, 5}
    slice := original[:2]
    slice[1] = 99
    fmt.Println(original) // 输出:[1 99 3 4 5]
    
    • 1
    • 2
    • 3
    • 4

    4. 变量声明的小细节 😂

    在Go中,使用 := 进行变量声明时,可能会导致意外的结果。

    x := 1
    if true {
        x, y := 2, 3
        fmt.Println(x, y) // 输出:2 3
    }
    fmt.Println(x) // 输出:1,而不是2
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    在这里插入图片描述

    总结

    Golang,作为一个现代的编程语言,其简洁和高效为我们提供了很多便利。但在实际开发中,我们也需要对Go的特性和细节有深入的了解。希望这篇文章能够帮助你更好地理解Go,避免一些常见的坑。

    在这里插入图片描述

    参考资料

    1. Go 官方文档
    2. Effective Go

    希望大家在Golang的旅程中,能够不断地进步,遇到问题时,不要灰心,相信经过不断的努力,你会成为一个出色的Go开发者!💪🚀🌟

    原创声明

    ======= ·

    • 原创作者: 猫头虎

    作者wx: [ libin9iOak ]

    学习复习
    ✔

    本文为原创文章,版权归作者所有。未经许可,禁止转载、复制或引用。

    作者保证信息真实可靠,但不对准确性和完整性承担责任。

    未经许可,禁止商业用途。

    如有疑问或建议,请联系作者。

    感谢您的支持与尊重。

    点击下方名片,加入IT技术核心学习团队。一起探索科技的未来,共同成长。

  • 相关阅读:
    【生成式人工智能-九-大型语言模型的幻觉、偏见等安全性问题】
    利用抽象工厂模式提升游戏开发的精度与灵活性
    tauri为窗口添加阴影效果
    共享股东模式:规则、优势与亮点
    async异步返回结果
    第十三篇-Tesla P40+ModelScope+Gradio+QWen-14B-Int4
    Node.js 应用开发详解16 RESTful 应用实践:构建一个介于前后台之间的服务
    4-2网络层-路由算法
    基于Java的医院管理系统设计与实现(源码+lw+部署文档+讲解等)
    841软件工程专业综合相关代码题总结(2)—— 栈、队列相关
  • 原文地址:https://blog.csdn.net/qq_44866828/article/details/133889986
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号