先聊聊「内存分配」,再聊聊Go的「逃逸分析」 要搞清楚GO的逃逸分析一定要先搞清楚内存分配和堆栈:,内存分配既可以分配到堆中,也可以分配到栈中。,什么样的数据会被分配到栈中,什么样的数据又会被分配到堆中呢?,GO语言是如何进行内存分配的呢?其设计... 网站建设# go# 内存# 函数 4年前860
Python和Go,谁才是编程语言的“王者”? 技术迭代的速度越来越快,这一点在编程语言的更新变化中尤为明显。前不久,Python开发商Anaconda发布了PyScript,让Python应用可以在浏览器中运行。而在近日,开发者采用相同的思路让G... 网站建设# go# python# 浏览器 4年前870
一篇学会 Go 的 TryLock 实现 在并发编程中,为了避免多线程同时读写共享资源,我们需要互斥。Go 标准库提供了互斥锁 sync.Mutex ,通过加锁 Lock() 方法和解锁 Unlock() 方法达到对共享资源的并发控制。,在之... 网站建设# go# trylock# 互斥 4年前420
谷歌官方正式发布了Go1.20稳定版「八千字详解」 Go1.20 变化不少,该版本依然保持 Go1 兼容性,我们可以升级到 Go1.20,而不需要做任何代码改动。,,可以使用你任何喜欢的方式升级:,比如:go install golang.org/d... 网站建设# go# 兼容性# 版本 4年前740
Go1.20 arena 能手动管理内存了,怎么用? 大家好,我是煎鱼。,最近 Go1.20 中的手动管理内存受到了很多人的关注。众所周知,Go 是一门带垃圾回收(GC)的编程语言,可以进行自动的内存申请、释放等内存操作。,带 GC 能简化编程时的心智成... 网站建设# arena# go# 内存 4年前190
Go1.20 将禁止匿名接口循环导入!这是一次打破 Go1 兼容性承诺的真实案例 大家好,我是煎鱼。,最近因为临近新版本发布节点,我在看 Go1.20 的新特性《spec: disallow anonymous interface cycles[1]》,发现了一个比较骚的操作... 网站建设# go# interface# 接口 4年前370
为什么说Go字符串不能修改 在接触Go这么语言,可能你经常会听到这样一句话。对于字符串不能修改,可能你很纳闷,日常开发中我们对字符串进行修改也是很正常的,为什么又说Go中的字符串不能进行修改呢?,本文就来通过实际案例给大家演示... 网站建设# go# 修改# 字符 4年前300
聊聊B-Tree的Golang实现 这次准备出一个关于B树的合集。在第一部分,先来介绍下B树的基本概念。,B树与bst等二叉树不同,B树是多叉树,而且B树是自平衡树。B树的Search、Insert、Remove算法时间复杂度都是O(l... 网站建设# a# b# ee 4年前560
Go 语言代码风格规范-指南篇 每门开发语言都会有其特有的风格规范(亦或指南),开发者遵循规范能带来显著收益,有效促进团队协作、减少 bug 错误、降低维护成本等。,Google 开源的 Google Style Guides ... 网站建设# go# google# 指南 4年前460
向 Swift 学习?Go 考虑简单字符串插值特性 大家好,我是煎鱼。,在日常开发 Go 工程中,我们经常会用 fmt.Printf 或 fmt.Sprintf 去写类似的拼装字符串的业务。,如下代码:,这业务迭代迭代着,日积月累的,有一部分常变的拼... 网站建设# fmt# go# 代码 4年前300
Go语言中什么是Goroutines Goroutine是一个被Go运行时管理的轻量级线程(A goroutine is a lightweight thread managed by the Go runtime)。为什么没有采用现有的... 网站建设# go# goroutine# goroutines 4年前280
Go 学习:并发编程 ,Go 语言在创建之初,CPU 多核发展正猛,Go 语言的创始人果断将面向多核、原生支持并发作为了 Go 语言的设计目标之一,所以在 Go 语言中使用并发有得天独厚的优势。,那么,什么是并发呢?,聊到... 网站建设# go# 并发# 并行执行 4年前310
我们一起 Go Modules知识点,你学会了吗? 起初Go语言在1.5之前没有依赖管理工具,若想引入依赖库,需要执行go get命令将代码拉取放入GOPATH/src目录下,作为GOPATH下的全局依赖,这也就意味着没有版本控制及隔离项目的包依赖... 网站建设# go# gopath# vendor 4年前710
Go 语言如何实现字符串切片反转函数 Go 语言不像其他语言如 Python,有着内置的 reverse() 函数,先来看一下 Python 中对于列表的反转方法,然后我们再来学习如果在 Go 语言中实现相同的功能。,reverse 算... 网站建设# go# reverse# 函数 4年前280
这个新 Go 错误处理提案,能解决问题不? 大家好,我是煎鱼。,Go 语言的一大特色就是它的错误机制,因此基本上所有的错误处理提案或讨论我都会有所查看和学习,开拓不同的思考视野和解决方法。,今天分享的是 @Cristo García[1] 所提... 网站建设# err# go# 提案 4年前120
Go 程序里 if else 分支太多?试着用策略模式治理一下吧! 大家好,我是每周在这里陪你一起进步的网管。,上篇文章我给大家分享了设计模式中的模版模式,给大家讲了用模版模式在项目开发时提炼流程、减少重复开发的技巧。同时,在上一篇文章我也分享了我总结的一个暴论,那就... 网站建设# go# 模式# 策略 4年前380
Golang Channel 三大坑,你踩过了嘛? 在使用 channel 进行 goroutine 之间的通信时,有时候场面会变得十分复杂,以至于写出难以觉察、难以定位的偶现 bug,而且上线的时候往往跑得好好的,直到某一天深夜收到服务挂了、OOM ... 网站建设# channel# go# goroutine 4年前160
让我们一起分析 Go 语言逃逸 熟悉 C / C++ 的读者朋友们应该都知道一个进程(应用程序)的虚拟内存空间划分为栈内存区和堆内存区。,栈内存区上对象的内存空间是自动分配和销毁的,使用者无需关心。但是,堆内存区上对象的内存空间是需... 网站建设# go# 使用者# 内存 4年前110
为什么我觉得GoFrame的Garray比PHP的Array还好用? 写过PHP的同学都知道 PHP的数组Array非常好用,特别灵活。,我在写PHP之前使用Java做安卓开发,在接触PHP的数组Array之后,直呼太香了!,而在学习Go基础知识的时候了解到Go的数组和... 网站建设# array# go# goframe 4年前460
还能这样玩?Go 将会增强 Go1 向前兼容性 大家好,我是煎鱼。新春快乐呀!,年前我们在《醒醒吧,未来不会有 Go2 了!》文章中讨论了 Go2 的未来,明确了未来是以 Go1.x.y 为主的 Go1 时代。,为了实现这个北极星目标,Go 团队采... 网站建设# go# 兼容# 向前 4年前240
站在开发者的角度理解框架的设计思想 最近有好多读者私信我,为什么选择GoFrame做电商项目的开发?,原因很简单:,因为我司是用GoFrame做电商业务开发的,而且我司同事基本都是PHP转Go的。GoFrame可以说是非常适合PHPer... 网站建设# go# goframe# 开发 4年前430
在项目里怎么给 GORM 做单元测试 真实的开发场景下我们的项目一般都会使用 ORM ,而不是原生的database/sql来完成数据库操作。在很多使用ORM工具的场景下,也可以使用go-sqlmock库 Mock数据库操作进行测试,今天... 网站建设# dao# go# gorm 4年前400
Go版本大于1.13,程序里这样做错误处理才地道 大家好,这里是每周都在陪你进步的网管。,之前写过几篇关于 Go 错误处理的文章,发现文章里不少知识点都有点落伍了,比如Go在1.13后对错误处理增加了一些支持,最大的变化就是支持了错误包装(Error... 网站建设# go# 包装# 知识点 4年前620
面试官:Net/Http库知道吗?能说说优缺点吗? 哈喽,大家后,我是asong;这几天看了一下Go语言标准库net/http的源码,所以就来分享一下我的学习心得;为什么会突然想看http标准库呢?因为在面试的时候面试官问我你知道Go语言的net/ht... 网站建设# go# http# net 4年前260
Go 学习:从环境搭建到写一个 Web 服务 ,最近学习了 Go 语言,做下记录。,和 C、C++ 相比, Go 是一门很年轻的语言。2007 年,在 Google 的内部,有三位大佬因为 C++ 的复杂性、构建编译速度很慢和对并发支持不好等原因... 网站建设# c# go# google 4年前310
Go 语言为什么建议定义零值可用的结构体? 在 Go 语言中,通过声明或者通过调用 new 为变量分配存储空间,或者通过复合字面量或调用 make 创建新值时。,如果未提供显式初始化,则会为变量或值指定默认值,此类变量或值的每个元素都设置为其类... 网站建设# go# 初始化# 类型 4年前120
搞清楚 Go Mod的版本和伪版本,下次别乱用了 今天再跟大家唠一下 Go Module 中软件包的版本和伪版本的内容,因为这是一个理想很丰满、现实很骨感的故事。,关于 Go Module 依赖包的软件版本,这块知识就很中规中矩啦,大部分资料里也都有... 网站建设# go# mod# module 4年前650
面试官:哥们,Go语言互斥锁了解到什么程度了? 哈喽,大家好,我是asong。,当提到并发编程、多线程编程时,都会在第一时间想到锁,锁是并发编程中的同步原语,他可以保证多线程在访问同一片内存时不会出现竞争来保证并发安全;在Go语言中更推崇由chan... 网站建设# go# 互斥# 并发 4年前470
不想Go 错误处理太臃肿,可以参考这个代码设计 最近写了个程序,因为是急活(貌似没有不急的...),所以这个程序又是我东拷一段,西粘一块拼出来的。代码写完了后,感觉这代码屎一样,都快把自己看哭了。真的是在心里边写别骂,先是骂以前做这个项目的人蠢,项... 网站建设# go# 代码# 这个 4年前230
从Go程序第一行代码,到在 K8s 上运行,要经历多少步? 大家好,我是网管。咱们的 K8s 入门和实践,在经历了三篇理论知识的后,相信各位都已经期待许久(可能的吧),就差私信我:“你整着理论整半天有啥用,本大人写的程序怎么能放到 K8s 上运行”。,别急,今... 网站建设# go# ks# 代码 4年前520
深入理解 Go 语言的一等函数及其应用 任何一门编程语言都离不开函数,无论是命令式语言 C、多范式编程语言 C++,还是面向对象编程语言 Java、Ruby,动态语言 Python、JavaScript,函数这一语法元素都是当仁不让的核心... 网站建设# go# 一等# 函数 4年前600
这些常用的 Go CLI 命令,新手 Gopher 应该掌握 本文将介绍一些最基本的 Go 命令行命令。如果你刚接触 Go 语言,那你有必要记住它们,因为这些命令是 Go 开发者日常工作中所必备的。,开始 Go 项目前,我们应该确保开发机上已经安装好了 Go 编... 网站建设# go# mod# 命令 4年前170
技巧:如何在 Go 中编写准确的基准测试? 大家好,我是程序员幽鬼。,今天给大家带来一篇关于基准测试的文章。,一般来说,我们永远不应该猜测性能。在编写优化时,可能会有很多因素发挥作用,即使我们对结果有强烈的看法,测试它们也不是一个坏主意。然而... 网站建设# go# 准确# 基准 4年前450
简化 Go 中对 JSON 的处理 我的第一个 Go 工程需要处理一堆 JSON 测试固件并把 JSON 数据作为参数传给我们搭建的 API 处理。另一个团队为了给 API 提供语言无关的、可预期的输入和输出,创建了这些测试固件。,在强... 网站建设# api# go# json 4年前300
Go编程语言的真正优点是什么? 在其十多年的发展历程中,Google 的Go 语言(又名Golang )已经从极客的好奇心发展成为一些重要云中心项目背后久经考验的编程语言。,,为什么Docker和Kubernetes等项目的开发者会... 网站建设# go# 编程语言# 语言 4年前590
【Go必知必会】错误和异常、CGO、fallthrough 这篇文章将详解「Go必知必会」的知识点:,错误指的是可能出现问题的地方出现了问题,比如打开一个文件时失败,这种情况在人们的意料之中,异常指的是不应该出现问题的地方出现了问题,比如引用了空指针,这种情... 网站建设# error# go# 壁纸 4年前310
Go 学习:那些不一样的知识点(上) ,在学习 Go 语言的过程中,会涉及到语法、数据结构、和一些 Go 特有的东西,其中有不少现在还印象深刻,本文就说说 Go 语言中那些不一样的地方。,上面示例是变量的声明方式,可以看到跟 C# 不同的... 网站建设# c# go# 代码 4年前340
Go 语言怎么处理三方接口返回数据? 在使用 Go 语言调用三方RESTful接口时,因为无法直接操作 json 字符串,所以我们需要先将 json 字符串转换为 map 或 struct。,本文我们介绍一下怎么处理三方接口返回数据。,我... 网站建设# go# json# 三方 4年前200
GoFrame的数组比PHP的数组还好用!? 写过PHP的同学都知道 PHP的数组Array非常好用,特别灵活。,我在写PHP之前使用Java做安卓开发,在接触PHP的数组Array之后,直呼太香了!,而在学习Go基础知识的时候了解到Go的数组和... 网站建设# array# go# goframe 4年前270
Go内存分配和逃逸分析-理论篇 大家好,我是阳哥。,今天和大家聊聊Go语言的「内存分配」和「逃逸分析」。,要搞清楚GO的逃逸分析一定要先搞清楚内存分配和堆栈:,内存既可以分配到堆中,也可以分配到栈中。,要搞清楚上面的问题,我们先来聊... 网站建设# go# 内存# 分配 4年前240
Go语言中的数据竞争模式 近年来,Uber已经开始采用Golang(简称Go)作为开发微服务的主要编程语言。目前,其Go monorepo(译者注:包含多个不同项目的单个仓库)包含了大约5,000万行代码,以及大约2,100个... 网站建设# go# goroutine# 共享内存 4年前520
醒醒吧,未来不会有 Go2 了! 大家好,我是煎鱼。,本周末在学习的时候,看到 Go 团队大当家 Russ Cox(下称:rsc)在近期分享的《GopherCon 2022: Russ Cox - Compatibility: How... 网站建设# cox# go# russ 4年前200
你有犯过这些 Go 编码错误吗? 大家好,我是煎鱼。,在用 Go 编程时,总会遇到各种奇奇怪怪的错误,国内外已经有许多小伙伴总结过(参考链接见参考),感觉都能凑一桌了。,希望对大家有所帮助。,在程序中声明(定义)了一个 map,然后直... 网站建设# go# 代码# 声明 4年前260
Go 语言为什么建议 append 追加新元素使用原切片变量接收返回值? 在 Go 语言中,切片类型比较常用,将新元素追加到切片也比较常见,因此 Go 语言提供一个内置函数 append,该函数可以非常方便实现此功能。,虽然 Go 语言内置函数 append 使用非常方便... 网站建设# append# go# 内置 4年前570
Go:Map 和 内存泄露 大家好,我是程序员幽鬼。分享一篇关于 map 和“内存泄露”的文章。,摘要:map 总是可以在内存中增长;它从不收缩。因此,如果它导致一些内存问题,你可以尝试不同的选项,例如强制 Go 重新创建 ma... 网站建设# go# map# 内存 5年前820
Go 的零值有什么用?看看这四个场景 Go 语言中有一个有些特殊的概念,叫做零值。许多转语言的同学经常会弄混淆,一开始会不适应。,代码如下:,输出结果:,这会导致大家在定义各种数据库字段时比较纠结,又会说 Go 这零值,例如:整型的零值 ... 网站建设# go# 定义# 数据库 5年前130
Go 十年了,终于想起要统一 log 库了! 大家好,我是煎鱼。,在日常工作中,打日志是很常见的动作。毕竟不打日志,从内部来讲,一旦出问题,定位、排查都会变的非常困难。谁也不想大半夜在那靠猜解决问题。,在其他方面,对日志的存储的内容、时长、安全均... 网站建设# go# log# 场景 5年前370
Go 大佬良心发现,愿意给 Map 加清除了? 大家好,我是煎鱼。,一个东西来来回回的讨论,关了又开,关了后建新的,新的被 ban 了,又发现新的论据,再打开新的。这在职场工作中很常见,在 Go 的提案讨论中,也出现了...,今天要分享的是 Go ... 网站建设# go# map# nan 5年前210
Swift 与 Go:苹果与谷歌的较量 ,译者 | 布加迪,Go与Swift可谓是彼此的劲敌。这两种编程语言都由科技巨头开发。Swift由苹果开发,而Go由谷歌开发。这就是为什么这些编程语言的比较又可以称为苹果与谷歌之间的较量。我们知道,这... 网站建设# go# swift# 开发 5年前450
Go 语言 Web 应用怎么使用 Nginx 部署? Golang 标准库 net/http 和 Go 语言 Web 框架,比如 Gin、Beego 和 Iris 等,可以很方便地构建一个 Web 应用。,Nginx 是一个 HTTP 和反向代理服务器... 网站建设# go# nginx# web 5年前290
【Go微服务】一文带你玩转ProtoBuf 在网络通信和通用数据交换等应用场景中经常使用的技术是 JSON 或 XML,在微服务架构中通常使用另外一个数据交换的协议的工具ProtoBuf。,ProtoBuf也是我们做微服务开发,进行Go进阶实战... 网站建设# go# json# protobuf 5年前430
在 Go 里用 CGO?这 7 个问题你要关注! 大家好,我是煎鱼。,今天给大家分享的是 Go 谚语中的 Cgo is not Go[1],原文章同名,略有修改,原文作者是 @Dave Cheney。以下的 “我” 均指代原作者。,借用 JWZ 的一... 网站建设# cgo# go# 使用 5年前370
GoFrame的gmap相比Go原生的map,天然支持排序和有序遍历!? 有好多初学GO的小伙伴都被Go语言中map的无序性“坑过”。尤其是PHP转Go的小伙伴~,这篇文章会为大家介绍:,GoFrame的gmap相比于Go原生的map有什么优势?为什么天然支持排序和有序遍历... 网站建设# gmap# go# goframe 5年前320
如何让 Go 反射变快,你学会了吗? 最近读到一篇关于 Go 反射的文章,作者通过反射给结构体填充字段值的案例,充分利用 Go 的各种内在机理,逐步探讨让代码运行得更快的姿势。,文章(原文地址:https://philpearl.gith... 网站建设# go# 反射# 填充 5年前110
PHP vs Go,为什么 Go 不支持命名参数调用函数? 大家好,我是煎鱼。,之前在《Go 语言设计哲学[1]》电子书中分享了《为什么 Go 不支持函数重载和缺省参数?》的思考和原因。最近有一位从其他编程语言转型 Go 的同学提出了如下灵魂拷问... 网站建设# go# php# 参数 5年前560
Go 微服务框架 go-micro 使用客户端 RPC 调用服务端方法返回 408 怎么解决? 本文我们使用 go-micro 构建微服务的服务端和客户端,并使用 gin 集成客户端构建 HTTP Api,在代码中模拟客户端 RPC 调用服务端方法返回 408 的问题,以及怎么解决?,客户端输出... 网站建设# go# micro# 代码 5年前410
网络工程师的Golang之路-布尔值、比较运算符、逻辑运算符 同Python一样,Go中布尔值(Boolean)分为true和false,用来判断条件是否成立,唯一的区别是Python中布尔值的首字母为大写(True和False),而Go中则为小写的true和f... 网站建设# go# python# true 5年前320
2022 年第二季度 Go 开发者调查报告 Go 博客发布了 2022 年第二季度 Go 开发者调查报告。据介绍,总共有 5752 名开发者参与了本次调查,分享了他们使用 Go 1.18 中新特性的经验和心得。,,绝大多数受访者 (86%) 已... 网站建设# go# 使用# 受访者 5年前240
Go 程序太大了,能要个延迟初始化不? 大家好,我是煎鱼。,在公司的不断发展中,一开始大多是大单体,改造慢了,一个仓库会有使用十几年的情况,仓库的规模基本是不断增大的过程。,影响之一就是会应用程序打包后的体积越来越大,不知道被用哪里去了... 网站建设# go# 仓库# 代码 5年前280
为什么 Go 不支持 []T 转换为 []interface 在 Go 中,如果 interface{} 作为函数参数的话,是可以传任意参数的,然后通过类型断言来转换。,举个例子:,不管是传 int 还是 string,最终都能输出正确结果。,那么,既然是这样... 网站建设# go# interface# 代码 5年前370
几个提升Go语言开发效率的技巧,你学会几个? 哈喽,大家好,我是asong。,每门语言都有自己的语法糖,像java的语法糖就有方法变长参数、拆箱与装箱、枚举、for-each等等,Go语言也不例外,其也有自己的语法糖,掌握这些语法糖可以助我们提高... 网站建设# go# 参数# 语法 5年前470
Go原生插件使用问题全解析 本人在设计和落地基于Go原生插件机制的扩展开发产品时踩到了很多坑,由于这方面相关资料很少,因而借此机会做一个非常粗浅的总结,希望能对大家有所帮助。,本文只说问题和解决方案,不读代码。,通常而言,在计算... 网站建设# go# java# 插件 5年前490