Golang语言经典程序100题
欢迎阅读!
贵哥的编程之路(后来者 未来是你们的)
我是陈业贵 海南软件职业技术学院2022届毕业生。后来者们 加油!
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
go Lock Sleep
Goods结构体包含::用数字(如商品编号)作为 key,库存数量为 value。:互斥锁,保证并发操作 map 时的安全。原创 2025-07-07 08:34:34 · 283 阅读 · 0 评论 -
go Go 并发、select、channel运用之法
【代码】go Go 并发、select、channel运用之法。原创 2025-07-07 08:34:16 · 481 阅读 · 0 评论 -
go sync.WaitGroup
【代码】go sync.WaitGroup。原创 2025-07-07 08:34:02 · 356 阅读 · 0 评论 -
go 语言中channel(通道)和 goroutine(协程)的基本用法
channel是 Go 并发通信的核心工具。无缓冲 channel:发送和接收必须同步进行。只读/只写 channel:通过类型限制,提升代码安全性和可读性。:优雅地遍历 channel 直到关闭。goroutine:Go 的轻量级线程,实现并发。原创 2025-07-07 08:33:45 · 610 阅读 · 0 评论 -
go `I/O`、`select`、`channel`、`等待锁`、`runtime.Gosched()` 以及 `-race` 检测数据访问冲突
I/O:输入输出操作,常常会阻塞。select:用于等待多个 channel 的操作。channel:协程间通信的管道。等待锁:多个协程竞争资源时的同步机制。:让出 CPU,调度其他协程。-race:检测并发程序中的数据竞争问题。原创 2025-07-06 00:03:36 · 366 阅读 · 0 评论 -
go 协程
这段代码会并发地输出666666和i am 0到i am 9(顺序不确定)。用go关键字启动协程,实现并发。用time.Sleep保证主程序不会过早退出。用参数传递避免闭包陷阱。原创 2025-07-06 00:03:26 · 280 阅读 · 0 评论 -
go test
🔍 完整代码详细解释📁 main.go 文件解析1. 包声明和导入:声明这是主包,可以生成可执行程序:导入格式化输入输出包,用于打印功能2. Show函数定义逐行解析:逐行解析::与被测试代码在同一包中:导入Go标准测试框架2. 表驱动测试详解结构体切片解析:测试用例分析:3. 子测试执行机制执行流程:测试方法对比:字符串长度测试:性能基准测试:🚀 运行和执行1. 运行主程序输出:2. 运行测试输出示例:原创 2025-07-06 00:03:15 · 371 阅读 · 0 评论 -
go recover
panic:触发严重异常,立即中断当前流程。recover:在defer中捕获panic,防止程序崩溃。defer:保证资源释放、日志记录、异常处理等关键操作一定会执行。最佳实践:panic只用于不可恢复的错误,普通错误用error返回。原创 2025-07-06 00:02:19 · 322 阅读 · 0 评论 -
go io.Reader io.Writer
io.Reader:Go标准库接口,代表只读数据流。常见实现有os.File等。io.Writer:Go标准库接口,代表只写数据流。常见实现有os.File等。分块读取:适合处理大数据流,节省内存。缓冲区写入:适合拼接字符串或二进制数据,效率高。错误处理:每次IO操作都应检查错误,保证健壮性。原创 2025-07-06 00:02:08 · 214 阅读 · 0 评论 -
go 闭包
函数变量/别名:Go支持将函数赋值给变量,实现高阶函数和回调。闭包:函数可以捕获外部变量,形成状态持久的函数对象。接口实现:函数类型也可以实现接口(如io.Reader),极大提升灵活性。流式处理io.Reader和结合,适合处理大数据流。最佳实践:代码结构清晰,注释详细,便于扩展和维护。原创 2025-07-06 00:01:56 · 328 阅读 · 0 评论 -
go defer panic 文件写入
defer:用于资源释放、清理、日志等场景,后进先出。panic:用于不可恢复的错误,触发后会执行所有defer语句。文件写入:推荐用提升效率,写完记得Flush。最佳实践:错误处理、资源释放、注释清晰。原创 2025-07-06 00:01:44 · 179 阅读 · 0 评论 -
go 接口组合 鸭子类型
接口组合:Go接口可以嵌套组合,形成更复杂的行为契约。鸭子类型:只要实现了接口方法,就自动满足接口。多态性:同一个接口可以被不同类型实现,组合出丰富的行为。最佳实践:结构体用指针接收者,接口设计小而专一。原创 2025-07-06 00:01:33 · 182 阅读 · 0 评论 -
go接口实现
接口是行为契约,只要实现方法即可传递。多态性:同一个接口可以被不同类型实现,组合出丰富的行为。鸭子类型:关注行为而非继承。编译时绑定:接口实现关系在编译期确定,类型安全。类型断言与类型开关:灵活处理接口背后的具体类型。最佳实践:结构体用指针接收者,接口设计小而专一。原创 2025-07-06 00:01:21 · 358 阅读 · 0 评论 -
go 多态
接口是行为契约,只要实现方法即可传递。多态性:同一个接口可以被不同类型实现,组合出丰富的行为。鸭子类型:关注行为而非继承。编译时绑定:接口实现关系在编译期确定,类型安全。最佳实践:结构体用指针接收者,接口设计小而专一。原创 2025-07-06 00:01:09 · 185 阅读 · 0 评论 -
go 鸭子类型 编译时绑定
我创建了一个全面的演示程序,深度解释Go语言的鸭子类型和编译时绑定机制。原创 2025-07-06 00:00:55 · 401 阅读 · 0 评论 -
go 接口
我已经将您的接口代码完全重构并优化,创建了一个。原创 2025-07-06 00:00:42 · 261 阅读 · 0 评论 -
go 结构体与组合
我已经将您的代码完全重构并优化,创建了一个。原创 2025-07-06 00:00:31 · 166 阅读 · 0 评论 -
go map
【代码】go map。原创 2025-07-06 00:00:20 · 264 阅读 · 0 评论 -
go 工厂
定义美食结构体,包含编号和名称。NewFood:工厂函数,返回指向新Food的指针,推荐用于创建结构体实例。原创 2025-07-06 00:00:08 · 319 阅读 · 0 评论 -
go 切片 slice
import ("fmt" // 格式化输入输出"reflect" // 反射,用于类型分析"strings" // 字符串操作"time" // 时间相关,用于性能测试"unsafe" // 内存操作,获取内存大小fmt: 提供格式化输入输出功能reflect: 用于运行时类型检查和分析strings: 字符串处理工具time: 性能测试计时unsafe: 底层内存操作,获取数据类型大小Name string // 商品名称Price float64 // 商品价格。原创 2025-07-05 00:03:13 · 878 阅读 · 0 评论 -
go 类型解析
蒜蓉小龙虾总价217。原创 2025-07-05 00:03:01 · 384 阅读 · 0 评论 -
go 常量、iota运用
这个程序完美展示了Go语言常量声明、iota的使用,以及常量在实际编程中的应用场景!原创 2025-07-05 00:02:50 · 300 阅读 · 0 评论 -
go 发送http请求
【代码】go 发送http请求。原创 2025-07-05 00:02:39 · 487 阅读 · 0 评论 -
go 累积for
这个优化版本展示了Go语言的高效性、并发特性和最佳编程实践!原创 2025-07-05 00:02:27 · 321 阅读 · 0 评论 -
go 结构体案例
return fmt.Sprintf("%s-作者是%s", b.Title, b.Author)面向对象设计:使用结构体封装图书信息实现Stringer接口:自定义字符串表示方法提升代码组织性:相关数据和方法聚合fmt.Printf("图书信息: %s\n", info)fmt.Printf("最终价格: %.2f元\n", finalPrice)类型别名:定义函数类型,提高代码可读性格式化输出:使用Printf替代Println,提供更好的格式控制。原创 2025-07-05 00:02:13 · 320 阅读 · 0 评论 -
go 指针==& 取地址 * 取值
import ("fmt""reflect" // 新增:用于类型反射"unsafe" // 新增:用于内存大小计算Price intStock int优化亮点:新增导入包reflect用于类型分析,unsafe用于内存分析结构体封装:将相关数据组织到结构体中,提升代码组织性实现Stringer接口:提供友好的字符串表示功能完整性✅ 涵盖值传递和指针传递的所有核心概念✅ 包含基础类型和结构体的传递方式✅ 提供性能分析和最佳实践指导。原创 2025-07-05 00:01:59 · 505 阅读 · 0 评论 -
go 值拷贝
import ("fmt""reflect" // 类型反射"strings" // 字符串操作(备用)"time" // 性能测试计时"unsafe" // 内存大小计算Name string // 菜品名称Price float64 // 价格Category string // 分类Rating int // 评分优化亮点:多包导入:增加了性能分析和内存检测能力结构体设计:更真实的业务场景建模接口实现:Stringer接口提供友好输出功能完整性升级。原创 2025-07-05 00:01:46 · 676 阅读 · 0 评论 -
go案例 fmt
声明并初始化两个变量,price2 为 68,wight 为 99。声明一个 int32 类型的变量 price,并赋值为 68。按格式输出 price(整数)和 name(字符串),并换行。声明一个字符串变量 name,并赋值为 “9990”。使用简短声明方式,声明并初始化 price3 为 2。使用简短声明方式,声明并初始化 wight2 为 1。按格式输出 price3 和 wight2,并换行。按格式输出 price2 和 wight,并换行。打印字符串 “555”,并自动换行。原创 2025-06-15 20:46:57 · 379 阅读 · 0 评论 -
go链接redis
【代码】go链接redis。原创 2024-03-31 18:50:41 · 334 阅读 · 1 评论 -
go链接mysql数据库
在这里,charset=utf8mb4 指定了使用 UTF-8 编码字符集,parseTime=True 指定了将数据库中的时间字段解析为 Go 的 time.Time 类型,loc=Local 指定了使用本地时区。它接受两个参数:第一个参数是数据库驱动程序,第二个参数是一个 *gorm.Config 类型的指针,用于配置数据库连接的行为。根据你的数据库设置,请将这里的用户名和密码替换为你实际的用户名和密码。这个结构体用于配置数据库连接的行为,但在这里是使用默认配置,所以是一个空的结构体。原创 2024-03-31 18:38:53 · 585 阅读 · 0 评论 -
go json与proto的区别,适合的场景
proto:传输快(二进制格式传输,,具备比json更强额度数据结构定义性),反序列化与序列化比json快.ProtoBuf 具有更好的扩展性,可以向已有的消息类型中添加新字段而不影响现有代码,更适合在不断演化的系统中使用。JSON适合在简单的数据交换、易读性要求高的场景下使用,而 ProtoBuf 更适合在对性能和空间有要求、需要严格数据结构定义和更好扩展性的场景下使用。json:(文本格式),具备很好的可读性。原创 2024-03-24 17:37:23 · 632 阅读 · 0 评论 -
go 一个基本的probuf文件的解析
【代码】go 一个基本的probuf文件的解析。原创 2024-03-24 17:33:58 · 513 阅读 · 0 评论 -
go 基于tcp的RPC远程调用
在运行go文件的地方:新建server(服务端)与client(客户端)目录,在里面都写上main.go文件server(服务端)main.goclient:main.go(客户端)首先运行服务端的main.go文件然后不要关闭服务端的main.go运行文件。然后运行客户端的main.go文件服务端指的是接收客户端请求并提供相应服务的程序。当客户端发起远程调用请求时,服务端程序会接收这个请求,并执行相应的远程过程或方法,然后将结果返回给客户端。具体来说,在RPC中:服务端负责实现远程方法或过程,并对外提原创 2024-03-24 17:25:30 · 374 阅读 · 0 评论 -
go RPC 实现了简单的远程调用过程
在运行go文件的地方:新建server(服务端)与client(客户端)目录,在里面都写上main.go文件server(服务端)main.goclient:main.go(客户端)首先运行服务端的main.go文件然后不要关闭服务端的main.go运行文件。然后运行客户端的main.go文件服务端指的是接收客户端请求并提供相应服务的程序。当客户端发起远程调用请求时,服务端程序会接收这个请求,并执行相应的远程过程或方法,然后将结果返回给客户端。具体来说,在RPC中:服务端负责实现远程方法或过程,并对外提原创 2024-03-24 17:13:44 · 409 阅读 · 0 评论 -
go writer与reader接口的运用
【代码】go writer与reader接口的运用。原创 2024-03-23 13:54:46 · 226 阅读 · 0 评论 -
go 流水线模式
可以看到有两个goroutine构成了一个简单的流水线。第一个goroutine负责生成0到9这些数字并发送到out通道中,第二个goroutine接收out通道中的数据,对每个数据加6后发送到out1通道中。最后,在主goroutine中从out1通道读取处理后的数据并打印输出。原创 2024-03-23 13:46:39 · 330 阅读 · 0 评论 -
go 多路复用(Multiplexing)
多路复用(Multiplexing)通常指的是通过 select 语句来同时监听多个通道的操作。简单来说,就是在一个地方等待多个通道中的任意一个有消息到来,一旦有消息到来,就执行相应的操作。原创 2024-03-22 19:44:44 · 515 阅读 · 0 评论 -
go并发任务运行器
【代码】go并发任务运行器。原创 2024-03-22 19:29:49 · 183 阅读 · 0 评论 -
go 并发模式之一,协程池(pool)
协程池就是提前创建一些协程(goroutine),当有任务来时,从这些协程中选择一个空闲的协程来执行任务,任务执行完后继续保持这个协程,以便下次任务到来时复用,避免频繁地创建和销毁协程,提高程序性能和效率。原创 2024-03-22 17:34:40 · 483 阅读 · 0 评论 -
go RSS案例
【代码】go RSS案例。原创 2024-03-22 17:15:45 · 425 阅读 · 0 评论
分享