尧图精选

[go学习笔记.第二章] 1.go的概述

🕒 发布时间:2026/9/14 19:34:15 📁 来源:尧图网络
在 介绍go的概述之前,我们来讲解一个知识:什么是程序为了让计算机执行某些操作或解决某些问题而编写的一系列有序指令的集合,简单来说:就是完成某个功能的指令的集合什么是指令指令是指挥计算机执行各种操作的命令一台计算机上指令的全体(集合)称为指令系统。也就是:指定电子计算机实现某种控制或运算的代码。画一个图理解:Go语言是区块链最主流的编程语言,它是有google公司创造的,也是google主推的语言.国外如google,AWS,CoreOS等,国内如七牛,小米,阿里,京东等已大规模使用go开发气云计算相关产品Google为什么要创建Go语言1.计算机硬件技术更新频繁, 性能提高很快,默目前主流的编程语言发展明显落后于硬件,不能合理利用多核多CPU的优势提升软件系统性能2.软件系统复杂度越来越高,维护成本越来越高,目前缺乏一个简洁而高效的编程语言.[现有语言:1.风格不统一 2.计算能力不够 3.处理大并发不够好]3.企业运行维护很多c,c的项目,c/c程序运行速度虽然快,但是编译速度慢,目前还存在内存泄漏的一系列问题Go语言的里程碑2007年谷歌工程师Ken Thompson、Rob Pike、Robert Griesemer开始设计一门全新的语言这是Go语言的最初原型。2009.11.10 Google将Go语言以开放源代码的形式向全球发布。2015年8月19日 Go1.5版本发布本次更新中移除了“最后残余的C代码”请内存管理方面权威专家Rick Hudson对GC进行重新设计重要的修正2017年2月16日 Go1.8版本发布GC停顿降至亚毫秒级插件机制Linux/Unix支持.so动态库2017年8月24日 Go1.9版本发布类型别名Type Alias并发Map支持sync.Map2018年2月16日 Go1.10版本发布缓存测试结果go test -v加速自动缓存依赖包构建结果$GOCACHE2018年8月24日 Go1.11版本发布模块Modules试验性支持go.modWebAssembly原生支持.wasm编译2019年2月25日 Go1.12版本发布runtime诊断工具增强调度器/GCTLS 1.3支持2019年9月03日 Go1.13版本发布模块功能正式成为官方推荐依赖管理方案改进数字字面量二进制0b、八进制0o2020年2月25日 Go1.14版本发布模块功能生产级可用go.mod原子写入Goroutine抢占式调度消除阻塞GC延迟2020年8月11日 Go1.15版本发布链接器性能提升20%-25%内存减少优化小型对象分配2021年2月16日 Go1.16版本发布模块默认开启GO111MODULEon嵌入静态资源//go:embed指令2021年8月16日 Go1.17版本发布优化函数调用栈寄存器传参提升20%性能支持切片转数组指针s[1:2]→(*[N]T)(s)2022年3月15日 Go1.18版本发布泛型Generics​​类型参数func F[T any](x T){}工作区模式go.work2022年8月02日 Go1.19版本发布文档注释增强支持链接/列表等格式化sync/atomic新增原子类型如atomic.Int642023年2月02日 Go1.20版本发布Profile引导优化PGO实验支持扩展errors能力支持多错误包装2023年8月 Go1.21版本发布加入内置函数min/max及clear清理容器标准库升级至​​VC 17VS2022​​slices/maps包加入泛型集合操作2024年2月 Go1.22版本发布range支持整型迭代for i : range 10{...}HTTP路由模式增强支持通配符方法2024年8月Go1.23版本发布for-range循环支持迭代器函数支持自定义序列迭代标准库slices和maps包新增迭代器支持新增godebug指令控制默认GODEBUG设置2025年2月Go1.24版本发布语言与运行时完全支持泛型类型别名类型别名现在可以像定义类型一样进行参数化如type UserRepo Repository[string]提升了代码复用性和可维护性12。Map 性能飞跃Swiss Tables运行时采用 Swiss Tables 算法重写了内置map实现大映射访问提升约 30%遍历速度视密度可提升 10%~60%整体 CPU 开销降低 2%~3%17。运行时互斥锁优化重写了运行时内部互斥锁实现在高并发场景如 GOMAXPROCS20下性能提升最高可达 3 倍1。GC 性能提升垃圾回收GC暂停时间大幅缩短内存使用效率提升约 20%4。标准库与生态新增os.Root类型提供在特定目录内隔离执行文件系统操作的能力增强了安全性15。新增weak.Pointer[T]支持弱指针可用于构建不阻止对象回收的内存高效缓存7。后量子密码学支持标准库原生集成 ML-KEMKyber后量子密钥交换并完善了 FIPS 140-3 合规机制17。HTTP/2 性能优化改进了 HTTP/2 流控机制高并发下的请求延迟p95降低约 15%吞吐量提升约 15%6。工具链工具依赖管理tool指令go.mod现在可以使用tool指令直接跟踪可执行依赖项如stringer、mockgen无需再使用tools.go的 hack 方式23。私有模块认证新增GOAUTH环境变量提供灵活的方式来认证并获取私有模块23。构建版本自动注入go build命令现在会根据版本控制系统VCS的标签或提交信息自动在编译的二进制文件中设置主模块的版本未提交更改会附加dirty后缀23。JSON 构建输出go build和go install命令新增-json标志支持以结构化 JSON 格式报告构建输出和失败信息2025年8月Go1.25版本发布引入容器感知的GOMAXPROCS自动适配Kubernetes CPU限制实验性Green Tea垃圾收集器优化小对象分配性能新增testing/synctest包及实验性encoding/json/v2包2026年2月Go1.26版本发布首个Go 1.26系列主要版本包含crypto/tls和os包的安全修复compiler、runtime、net、os和syscall包的错误修复2026年8月Go1.27版本发布正式支持泛型方法方法可独立声明类型参数:方法可独立声明类型参数解决泛型容器方法声明难题增强函数类型推断能力适用于所有赋值场景runtime优化小对象内存分配性能提升最高30%:小对象分配提速 30%、Green Tea GC 扶正、Goroutine Leak 分析 GA等运行时优化新增encoding/json/v2、uuid包及实验性simd包: 更严格的默认行为性能显著提升结构体字面量深层字段选择器直接初始化嵌套结构体字段crypto/mldsa 包FIPS 204 ML-DSA 后量子签名方案sync.ShardedMap高频并发场景性能提升最高 8 倍Go语言的特点Go语言保证了既能达到静态编译语言的安全和性能,又达到了动态语言开发维护的高效率,使用一个表达式来形容Go: Go C Python, 说明Go语言既有C静态语言的运行效率,又能达到Python动态语言的快速开发.1.从C语言那里继承了很多理念,包括表达式语法,控制结构,基础数据类型,调用参数传值,指针等,也保留了C语言一样的编译执行方法及弱化的指针.2.引入了包的概念,用于组织程序结构,Go语言的一个文件都要归属于一个包,而不能单独存在.3.垃圾回收机制,内存自动回收,不需要开发人员管理4.天然支持并发从语言层次支持并发,实现简单goroutine,轻量级线程,可实现大并发处理,高效利用多核基于CPS并发模型(Communicating Sequential Processes)实现5.吸收了管道通信机制,形成Go语言特有的管道channel,通过管道channel,可以实现不同的goroutine之间的相互通信6.函数返回多个值7.新的创新,比如:切片,延时执行defer等上一节[go学习笔记.第一章] go可以做什么下一节: [go学习笔记.第二章] 2.go语言的开发工具以及安装和配置SDK
上一篇/下一篇内容由系统自动关联 返回资讯列表 →