golang
已收录文章:12183篇
-
Go函数:探索未来,开启创新篇章函数是Go语言中至关重要的概念,它们允许我们封装代码并进行重用。随着版本的演进,Go函数也在不断发展,为我们提供了更多功能和可能性。函数式编程的崛起Go1.18引入了泛型,这标志着函数式编程在Go中的飞跃。借助泛型,我们现在可以在函数参数和返回值中使用类型变量,从而创建更通用和可重用的代码。funcSum[Tnumeric](values[]T)T{sum:=T(0)for_,val:=rangevalues{489 收藏
-
如何在Golang中实现WebSocket通信?使用标准库net/http配合gorilla/websocket包可快速搭建高性能WebSocket服务端和客户端。1.建立连接需定义Upgrader配置并通过Upgrade方法升级HTTP连接;2.收发消息通过ReadMessage和WriteMessage方法实现,建议分别在goroutine中处理;3.保持连接稳定可通过添加心跳机制、设置超时时间和自动重连机制实现;4.客户端连接使用websocket.Dial发起请求,并同样处理收发消息逻辑。489 收藏
-
TCP粘包问题的解决核心在于自定义应用层协议以标识消息边界,并在接收端正确拆包处理。1.TCP粘包是其正常行为,由发送方合并小包、接收方读取慢或数据过大被分片等原因引起。2.协议设计要点包括:消息头包含固定长度字段(如int32)标识消息体长度,结构清晰易编解码。3.Golang实现拆包流程为:持续读取数据至缓冲区,判断是否含完整消息头和消息体,满足条件则提取处理,否则等待后续数据。4.实际开发建议使用bufio.Reader、成熟框架如gRPC,注意字节序一致、缓冲区管理及拆包逻辑独立运行,同时处理连接489 收藏
-
引言 基于net包的小应用 完整代码已经上传到github GitHub-TCP 欢迎star和issue TCP介绍 特点 面向连接的运输层协议。在应用程序在使用TCP协议之前,必须先建立TCP连接。在传送数据完毕后,必须释488 收藏
-
问题内容我在学习Reader的时候,发现有io.Reader和strings.Reader:io.Reader: type Reader interface { Read(p []byte) (n int, err error) } strings.Reader: type Reader struct { s string i int64 // current readin488 收藏
-
项目中遇到了可重入锁的需求和实现,具体记录下。 什么是可重入锁 我们平时说的分布式锁,一般指的是在不同服务器上的多个线程中,只有一个线程能抢到一个锁,从而执行一个任务。而我488 收藏