IT书架 本次搜索耗时 0.132 秒,为您找到 1075 个相关结果.
  • 6. Go 函数返回局部变量的指针是否安全?

    6. Go 函数返回局部变量的指针是否安全? 6. Go 函数返回局部变量的指针是否安全? 一般来说,局部变量会在函数返回后被销毁,因此被返回的引用就成为了”无所指”的引用,程序会进入未知状态。 但这在 Go 中是安全的,Go 编译器将会对每个局部变量进行逃逸分析。如果发现局部变量的作用域超出该函数,则不会将内存分配在栈上,而是分配在堆上,因为他们...
  • 7.Go 函数参数传递到底是值传递还是引用传递?

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

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

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

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

    单例模式 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 模式动机 对于系统中的...
  • 2.Go map遍历为什么是无序的?

    2.Go map遍历为什么是无序的? 2.Go map遍历为什么是无序的? 使用 range 多次遍历 map 时输出的 key 和 value 的顺序可能不同。这是 Go 语言的设计者们有意为之,旨在提示开发者们,Go 底层实现并不保证 map 遍历顺序稳定,请大家不要依赖 range 遍历结果顺序 主要原因有2点: map在遍历时,并不是从固...
  • Channel

    1.Go channel的底层实现原理? 2.Go channel有什么特点? 3.Go channel有无缓冲的区别? 4.Go channel为什么是线程安全的? 5.Go channel如何控制goroutine并发执行顺序? 6.Go channel共享内存有什么优劣势? 7.Go channel发送和接收什么情况下会死锁?
  • 2.Go channel有什么特点?

    2.Go channel有什么特点? 2.Go channel有什么特点? channel有2种类型:无缓冲、有缓冲 channel有3种模式:写操作模式(单向通道)、读操作模式(单向通道)、读写操作模式(双向通道) 写操作模式 读操作模式 读写操作模式 创建 make(chan<- int) make(<-chan ...
  • 调度模型

    1.Go 线程实现模型? 2.Go GMP和GM模型? 3.Go 调度原理? 4.Go work stealing 机制? 5.Go hand off 机制? 6.Go 抢占式调度? 7.Go 如何查看运行时调度信息?