Go 面试题:Go interface 的一个 “坑” 及原理分析
原创 陈煎鱼 脑子进煎鱼了 3月16日
收录于话题
#Go45
#面试题13
大家好,我是煎鱼。
前几天在读者交流群里看到一位小伙伴,针对 interface 的使用有了比较大的疑惑。
原创 陈煎鱼 脑子进煎鱼了 3月16日
收录于话题
#Go45
#面试题13
大家好,我是煎鱼。
前几天在读者交流群里看到一位小伙伴,针对 interface 的使用有了比较大的疑惑。
前几天在读者交流群里看到一位小伙伴,在向大家咨询 Go 相关的技术问题。疑问是:“各位大佬,我在学习 defer 遇到闭包的时候很懵逼,谁比较明白,能指点?”
前几天在读者交流群里看到一位小伙伴,发出了一个致命提问,那就是:“单机的 goroutine 数量控制在多少比较合适?”。
也许你和群内小伙伴第一反应一样,会答复 “控制多少,我觉得没有定论”。
在 Go 语言中,有两个比较雷同的内置函数,分别是 new
和 make
方法,其主要用途都是用于分配相应类型的内存空间。
看上去 new
和 make
都是分配内存的,那他们有什么区别呢?这个细节点也成为了不少 Go 语言工程师的面试题之一,值得大家一看。
我们在写代码的时候,有时候会想这个变量到底分配到哪里了?这时候可能会有人说,在栈上,在堆上。信我准没错…
但从结果上来讲你还是一知半解,这可不行,万一被人懵了呢。今天我们一起来深挖下 Go 在这块的奥妙,自己动手丰衣足食!
前几天 Go 官方正式发布了 1.16 版本。从这个版本起,环境变量 GO111MODULE 的默认值正式修改为 on。
这也意味着 Go modules 将更进一步推进其业务覆盖面,有新老项目共存的小伙伴建议手动将 GO111MODULE 调整为 auto。
在上一篇 Go1.16 特性介绍的文章中我们有提到,从 v1.16 起,Go 在 Linux 下的默认内存管理策略会从MADV_FREE
改回 MADV_DONTNEED
策略。
这时候可能至少分两拨小伙伴,分别是:
Go1.16 新特性:一文快速上手 Go embed
以下内容转载自煎鱼的blog
大家好,我是正在沉迷学习煎鱼的煎鱼。
在以前,很多从其他语言转过来 Go 语言的同学会问到,或是踩到一个坑。就是以为 Go 语言所打包的二进制文件中会包含配置文件的联同编译和打包。
结果往往一把二进制文件挪来挪去,就无法把应用程序运行起来了。因为无法读取到静态文件的资源。
无法将静态资源编译打包进二进制文件的话,通常会有两种解决方法:
第一种是识别这类静态资源,是否需要跟着程序走。
第二种就是考虑将其打包进二进制文件中。
第二种情况的话,Go 以前是不支持的,大家就会去借助各种花式的开源库,例如:go-bindata/go-bindata 来实现。
但从在 Go1.16 起,Go 语言自身正式支持了该项特性,今天我们将通过这篇文章快速了解和学习这项特性。
基本使用