IT书架 本次搜索耗时 0.116 秒,为您找到 1023 个相关结果.
  • 8.Go defer关键字的实现原理?

    8.Go defer关键字的实现原理? 8.Go defer关键字的实现原理? 定义 : defer 能够让我们推迟执行某些函数调用,推迟到当前函数返回前 才实际执行。defer与panic和recover结合,形成了Go语言风格的异常与捕获机制。 使用场景 : defer 语句经常被用于处理成对的操作,如文件句柄关闭、连接关闭、释放锁 优点...
  • 7.Go 函数参数传递到底是值传递还是引用传递?

    7.Go 函数参数传递到底是值传递还是引用传递? 7.Go 函数参数传递到底是值传递还是引用传递? 【点击观看视频】Go 函数参数传递到底是值传递还是引用传递? 先说下结论: Go语言中所有的传参都是值传递(传值),都是一个副本,一个拷贝。 参数如果是非引用类型(int、string、struct等这些),这样就在函数中就无法修改原内容数据;...
  • 3.Go map为什么是非线程安全的?

    3.Go map为什么是非线程安全的? 3.Go map为什么是非线程安全的? map默认是并发不安全的,同时对map进行并发读写时,程序会panic,原因如下: Go 官方在经过了长时间的讨论后,认为 Go map 更应适配典型使用场景(不需要从多个 goroutine 中进行安全访问),而不是为了小部分情况(并发访问),导致大部分程序付出加锁代...
  • 3.Go channel有无缓冲的区别?

    3.Go channel有无缓冲的区别? 3.Go channel有无缓冲的区别? 无缓冲:一个送信人去你家送信,你不在家他不走,你一定要接下信,他才会走。 有缓冲:一个送信人去你家送信,扔到你家的信箱转身就走,除非你的信箱满了,他必须等信箱有多余空间才会走。 无缓冲 有缓冲 创建方式 make(chan TYPE) m...
  • 单例模式

    单例模式 5.1 模式动机 5.2 模式定义 5.3 模式结构 5.4 时序图 5.5 模式分析 5.6 实例 5.7 优点 5.8 缺点 5.9 适用环境 5.10 模式应用 5.11 Go语言实现 singleton.go singleton_test.go 5.12 总结 单例模式 5.1 模式动机 对于系统中的...
  • 7.Go map如何扩容?

    7.Go map如何扩容? 7.Go map如何扩容? 扩容时机: 在向 map 插入新 key 的时候,会进行条件检测,符合下面这 2 个条件,就会触发扩容 if ! h . growing () && ( overLoadFactor ( h . count + 1 , h . B ) || tooManyOverfl...
  • 模式介绍

    模式介绍 包含模式 模式介绍 创建型模式(Creational Pattern)对类的实例化过程进行了抽象,能够将软件模块中对象的创建和对象的使用分离。为了使软件的结构更加清晰,外界对于这些对象只需要知道它们共同的接口,而不清楚其具体的实现细节,使整个系统的设计更加符合单一职责原则。 创建型模式在创建什么(What),由谁创建(Who),何时创建...
  • 3.Go WaitGroup实现原理?

    3.Go WaitGroup实现原理? 概念 底层数据结构 使用方法 3.Go WaitGroup实现原理? 概念 Go 标准库提供了WaitGroup 原语, 可以用它来等待一批 Goroutine 结束 底层数据结构 // A WaitGroup must not be copied after first use. type...
  • 1.Go 线程实现模型?

    1.Go 线程实现模型? 背景 三种线程模型 1.Go 线程实现模型? Go实现的是两级线程模型(M:N),准确的说是GMP模型,是对两级线程模型的改进实现,使它能够更加灵活地进行线程之间的调度。 背景 含义 缺点 单进程时代 每个程序就是一个进程,直到一个程序运行完,才能进行下一个进程 1. 无法并发,只能串行 ...
  • 4.Go map如何查找?

    4.Go map如何查找? # 查找流程 4.Go map如何查找? Go 语言中读取 map 有两种语法:带 comma 和 不带 comma。当要查询的 key 不在 map 里,带 comma 的用法会返回一个 bool 型变量提示 key 是否在 map 中;而不带 comma 的语句则会返回一个 value 类型的零值。如果 value...