标签: #Golang

Go语言修炼(五):搞清楚Go语言中的那些“空”们

本文深入剖析Go语言中的“空”概念及接口底层实现。接口值底层由`iface`(非空接口,含`tab`和`data`)和`eface`(空接口,含`_type`和`data`)构成,类型断言依赖`itab`记录的类型与方法信息。空结构体非`nil`,常用于节约内存(如Hashset的Value、channel信号);`nil`是六种类型(指针、channel等)的零值,且具有类型。空接口仅当`_type`和`data`均为空时才为`nil`。核心要点:`nil`有类型,空结构体非`nil`,接口`nil`需类型与数据同时为空。

Go语言修炼(四):面试官问我sync.Map的底层实现

前言 上一篇博文我们讲解了Go语言中map的底层实现,然而就像Java中的HashMap是并发不安全的,Go语言的map也是不支持并发场景的。 如果要在并发场景下使用map,就需要用到我们即将介绍的sync.Map。 map的并发问题 首先,我们先来理解一下为什么Go语言的map会存在并发问题。 让

Go语言修炼(三):Go语言中的Map到底是怎么实现的

前言 在编程的世界里,数据结构是构建高效、可维护软件大厦的基石。而在众多数据结构中,Map(哈希表)因其能够快速存取键值对的能力而备受青睐。对于使用Go语言进行开发的程序员来说,Map更是日常编码中不可或缺的一部分。它允许我们以近乎常数的时间复杂度(O(1))来查找、插入或删除元素,极大地提升了程序

Go语言修炼(二):Go语言字符串和切片底层探索

前言 字符串作为文本处理的基础,在Go语言中扮演着举足轻重的角色。它提供了一种方便的方式来存储和操作文本数据。而切片,作为Go语言特有的动态数组实现,他不仅仅是数组的抽象,更是Go语言并发编程中不可或缺的组件。 本文旨在剖析字符串与切片的关键底层原理,不仅为面试准备提供有力支持,更关键的是,这些知识

Go语言修炼(一):Go语言编译与运行过程浅探

Go语言(Golang)以简洁、快速、安全的设计哲学,在云计算、微服务等领域备受青睐。其核心特点包括:跨平台编译生成二进制文件,无虚拟化损失;自带runtime支持内存管理、垃圾回收及原生并发能力,简化开发。编译过程涵盖前端词法/句法/语义分析,后端生成SSA中间码(便于问题定位)及机器码;启动时通过runtime初始化协程调度,最终在协程中执行用户main函数,兼顾高效性与便捷性,成为现代开发的高效选择。

Go Web尝试:基于gin和gorm的Go Web Demo

项目简介 目的:这个demo旨在快速了解如何用gin+gorm实现简单的CRUD操作。 功能:实现简单的个人信息录入。 技术: gin:golang的轻量级web框架 gorm:golang的ORM框架 测试工具:postman Ps:本demo实现分层,所有的代码都在main.go中。 准备工作