深圳幻海软件技术有限公司 欢迎您!

  • Go1.20 那些事:PGO、编译速度、错误处理等新特性,你知道多少?

    大家好,我是煎鱼。最近Go1.20在2月初已经正式发布,来的挺早的,以往都是拖到月底的,我翻了好几篇,发现最后还是做了不少功能取舍,被迫放了某些新特性(例如:arena等)的鸽子!怀疑Go团队2月份是有什么事要干,或者打算休假?又或是担心裁员影响工作交接?今天快速温习与我们关联性多些的新特性,看看升

  • 加大力度!Go 将会增强 Go1 向后兼容性

    大家好,我是煎鱼。前段时间我们在写Go1.20新特性和变更时,发现了一个问题有悖论。Go1有兼容性承诺,但如果发现了BUG,会破坏兼容性。那怎么办?是大胆修改,破坏掉,还是说设计如此,打死不改?写了个开头结果阳了,现在阳康还咳嗽回来接着更。Go1兼容性保障在Go1引入了Go兼容性保障《Go1andt

  • 醒醒吧,未来不会有 Go2 了!

    大家好,我是煎鱼。本周末在学习的时候,看到Go团队大当家RussCox(下称:rsc)在近期分享的《GopherCon2022:RussCox-Compatibility:HowGoProgramsKeepWorking[1]》,讲的是Go在兼容性方面的现有问题和思考,还埋了个新预期。如下图:他提出

  • Go 1.18 新增三大功能之一“模糊测试”使用方式

    ​1、介绍在Go1.18之前,Go语言支持功能测试、基准测试和示例测试,在Go项目开发中,使用最多的是功能测试,读者朋友们应该都比较熟悉功能测试的使用方式了。在Go1.18中,Go语言新增模糊测试,本文我们介绍模糊测试的使用方式。2、使用方式Go语言的模糊测试,与其他三种测试方式相同,测试文件的文件

  • 源码解析 Kubectl Port-Forward 工作原理

    本文的源码基于Kubernetesv1.24.0,容器运行时使用Containerd1.5,从源码来分析kubectlport-forward的工作原理。通过port-forward流程的分析,梳理出kubectl->api-server->kubelet->容器运行时的交互,了解

  • 在 Go 里用 CGO?这 7 个问题你要关注!

    大家好,我是煎鱼。今天给大家分享的是Go谚语中的 CgoisnotGo[1],原文章同名,略有修改,原文作者是@DaveCheney。以下的“我”均指代原作者。借用JWZ的一句话:有些人在面对一个问题时,认为"我知道,我会使用cgo(来解决这个问题)"。类似的引言在使用cgo后,他们就会遇

  • 伙计,Go项目怎么使用枚举?

    前言哈喽,大家好,我是asong​。枚举是一种很重要的数据类型,在java、C语言等主流编程语言中都支持了枚举类型,但是在Go语言中却没有枚举类型,那有什么替代方案吗?本文我们来聊一聊这个事情;为什么要有枚举我们以java​语言为例子,在JDK1.5​之前没有枚举类型,我们通常会使用int常量来表示

  • Go 要加个箭头语法,这下更像 PHP 了!

    大家好,我是煎鱼。在六一儿童节前夕在摸煎鱼时,看到一个很神奇的Go2的技术提案,想要加一个更简单、更轻量的匿名函数语法。今天就由煎鱼和大家一起看看。新提案新的Go提案目的是添加轻量级的匿名函数语法,业内别名又叫“箭头语法”,是由@DamienNeil所提出的,提案的来源是《proposal:Go2:

  • Go语言如何自定义linter(静态检查工具)

    前言哈喽,大家好,我是asong;通常我们在业务项目中会借助使用静态代码检查工具来保证代码质量,通过静态代码检查工具我们可以提前发现一些问题,比如变量未定义、类型不匹配、变量作用域问题、数组下标越界、内存泄露等问题,工具会按照自己的规则进行问题的严重等级划分,给出不同的标识和提示,静态代码检查助我们

  • Go 项目使用 Makefile

    01介绍Go提供一个名为go的命令,该命令可自动下载、构建、安装和测试Go包和命令。Go提供go命令,官方的目的是为了不需要编写Makefile,而是能够仅使用Go源代码本身中的信息来构建Go代码。但是,我们在Go项目中也不需要完全摒弃使用make和Makefile,可以使用Makefile的“伪目

  • 为什么 Go 用起来会难受?这六个坑你知道吗

    在做新的应用选型时,我们会进行应用编程语言的选择,这时会纠结Java、PHP、Go...各种,会思考有没有致命的问题,不能用?可以明确的是,Go没有非常致命的问题,否则你我他都不会在这里相遇,也不会大火。难受的点,倒是有不少,今天就由煎鱼和大家一起来看看。难受的点泛型在Go1.18以前,在所有社交媒

  • Go 语言整洁架构实践

    01 介绍Bob大叔在他的一篇标题为「整洁架构」的博客中提及,现在一些流行的系统架构,都采用软件分层设计,都主张以下5个规则:独立于框架可测试的独立于用户界面独立于数据库独立于任何外部依赖Bob大叔的架构设计遵循依赖规则,他画了一张同心圆的图,共分为4层,同心圆由内向外依次为Entitie

  • Go 限制 Committer 群体?每项更改都需两名谷歌员工审查

    谷歌工程师RussCox在周一给golang-dev的邮件列表中宣布,该公司决定以后有关Go编程语言的每项改动都需经由2名谷歌员工审查以后(以前为1名),才可以面向用户发布。但其并未透露谷歌作出该决策的具体动机。出于合规性和供应链安全的考虑,谷歌最近重新审视了我们在所有环境中使用的代码审查要求,包括

  • Go 微服务工具包 Go kit 怎么集成 gRPC?

    01介绍我们在上一篇文章「​​Go语言基于Gokit开发Web项目​​」中,介绍了怎么使用Gokit开发Web项目,在这篇文章中,我们传输层使用的是HTTP,本文我们介绍Gokit怎么集成gRPC,也就是说我们在传输层使用rpc。在阅读完前面几篇文章后,我们已经了解Gokit分为三层,分别是Tran

  • Go1.18 新特性:弃用 strings.Title 方法,换个新坑吧!

    本文转载自微信公众号「脑子进煎鱼了」,作者陈煎鱼。转载本文请联系脑子进煎鱼了公众号。大家好,我是煎鱼。最近在看Go1.18ReleaseNotes时,发现strings,bytes标准库的Title方法,竟然被弃用了(Deprecated),这是为什么呢?今天这篇文章就由煎鱼和大家一起看看。介绍这里

  • 跟着官网学Go之Golang环境准备

    我一直都想实践Golang,这段实践我计划跟着Golang官网学习Go语言,因为有C#的基础,所以,在学习Golang的实践过程中,不会记录那么细致了。环境安装Windows安装Go环境还是很方便的,直接下载官方提供的安装包安装即可,目前官网的Golang版本为1.17.6先将其下载到本地,然后双击

  • Go1.18 新特性:多 Module 工作区模式

    大家好,我是煎鱼。Go的依赖管理,也就是GoModule。从推出到现在,也已经有了一定的年头了,吐槽一直很多,官方也不断地在进行完善。Go1.18将会推出一个新特性:Multi-ModuleWorkspaces,用于支持Module多工作区,能解决以往的一系列问题。今天将由煎鱼带大家一起深入学习。背

  • Go:十个与众不同的特性,你知道吗?

    大家好,我是程序员幽鬼。Go作为一门相对较新的语言,能够脱颖而出,肯定是多方面的原因。本文聊聊它不同于其他语言的10个特性。Go的创建者RobertGriesemer[1]、RobPike[2]和KenThompson[3]在Google工作,在那里,大规模扩展的挑战激发了他们将Go设计为具有大型代

  • Go1.17 新特性,优化抛出的错误堆栈

    本文转载自微信公众号「脑子进煎鱼了」,作者陈煎鱼。转载本文请联系脑子进煎鱼了公众号。大家好,我是煎鱼。平时在日常工程中,我们常常会用到异常恐慌(panic)的记录和追踪。最常见的就是,线上panic了之后,我们总想从中找到一些蛛丝马迹。我们很多人是看panic是看他的调用堆栈。然后就开始猜,看代码。

  • Go1.17 新特性,凭什么提速 5~10%?

     大家好,我是煎鱼。在Go1.17发布后,我们惊喜的发现Go语言他又又又优化了,编译器改进后产生了约5%的性能提升,也没有什么破坏性修改,保证了向前兼容。他做了些什么呢,好像没怎么看到有人提起。为此今天煎鱼带大家来解读两新提案:《Proposal:Register-basedGocalli

推荐阅读