随笔分类 -  Golang

上一页 1 2 3 4 下一页

golang 可变参数用法, handlers ...HandlerFunc
摘要:handlers ...HandlerFunc 这是什么写法,与 group.handle() 第三个参数是 []handlerFunc 是什么关系呢? 下面是 gin 中的用法: routergroup.go // GET is a shortcut for router.Handle("GET" 阅读全文

posted @ 2024-06-05 21:00 ercom 阅读(64) 评论(0) 推荐(0)

golang net/http 的 ListenAndServe 的工作方式(取代 listen、accept)
摘要:在Go的 net/http 包中,当你使用 ListenAndServe 或 ListenAndServeTLS 函数启动一个HTTP服务器时, 你不需要直接调用 listen 和 accept 操作,因为这些函数已经为你处理了这些底层的网络细节。 ListenAndServe 函数的工作方式如下: 阅读全文

posted @ 2024-06-04 20:11 ercom 阅读(231) 评论(0) 推荐(0)

tcp server 为什么需要 accept
摘要:在TCP协议中,服务器端建立连接的过程分为几个步骤,其中accept操作起到了关键作用,具体原因包括: 1. 连接管理:当一个TCP客户端发起连接请求时,它会向服务器发送一个SYN(同步)包,开始三次握手过程。 服务器通过监听 socket 接收到这个SYN包后,会回复一个SYN-ACK(同步-确认 阅读全文

posted @ 2024-06-04 20:05 ercom 阅读(139) 评论(0) 推荐(0)

golang 的 net/http 和 net/rpc 的区别, rpc 效率比 http 高?
摘要:在Go语言中,net/http 和 net/rpc 是两个不同的包,它们分别用于实现不同的网络通信模式: net/http: net/http 包主要用于构建Web服务和客户端,它实现了HTTP协议,这是互联网上最广泛使用的应用层协议之一,主要用于传输超文本(HTML)和其他资源。 HTTP 协议是 阅读全文

posted @ 2024-06-04 19:57 ercom 阅读(346) 评论(0) 推荐(1)

golang import 导入的四种方式
摘要:1 标准导入: import "package_name" 2 导入别名: import ( alias "package_name" ) 3 匿名导入: import ( _ "package_name" ) 4 点导入: import ( . "package_name" ) 下面做详细解释: 阅读全文

posted @ 2024-05-30 21:29 ercom 阅读(612) 评论(0) 推荐(0)

golang的 CGO 是什么
摘要:CGO是Go(Golang)语言中的一个工具,全称为 "C-Go" 或者 "C for Go"。 它是Go标准库的一部分,允许Go代码与C语言代码进行交互。 CGO提供了在Go程序中使用C语言库的能力,同时也允许C代码调用Go的函数。 通过CGO,开发者可以利用Go语言的强类型和垃圾回收等特性,同时 阅读全文

posted @ 2024-05-27 23:03 ercom 阅读(951) 评论(0) 推荐(0)

golang的交叉编译是什么
摘要:Go(Golang)的交叉编译是指在一种硬件架构或操作系统环境下,使用Go编译器生成适用于另一种架构或操作系统的可执行程序。 Go语言的设计使得交叉编译变得非常简单和高效,它允许开发者在开发环境中构建目标平台上的代码,而无需在目标平台上实际运行编译过程。 在Go中,交叉编译主要涉及到设置两个环境变量 阅读全文

posted @ 2024-05-27 23:00 ercom 阅读(238) 评论(0) 推荐(0)

golang为什么chan大部分是发送结构体,而不是其它比如string
摘要:type token struct{} type Group struct { cancel func(error) wg sync.WaitGroup sem chan token errOnce sync.Once err error } func (g *Group) done() { if 阅读全文

posted @ 2024-05-27 22:56 ercom 阅读(62) 评论(0) 推荐(0)

golang 的学习曲线
摘要:Go(Golang)语言的设计目标之一就是让其学习曲线尽可能平缓,这意味着对于大多数开发者来说,学习Go语言比许多其他现代编程语言可能更快上手。以下是通常Golang学习曲线的一个概述: 1 入门阶段: 基本语法:Go语言的语法相对简单,与C/C++和Java有一定的相似性,所以对于有这些背景的开发 阅读全文

posted @ 2024-05-23 19:06 ercom 阅读(188) 评论(0) 推荐(0)

golang select 和外层的 for 搭配
摘要:select语句通常与for循环搭配使用,但并不是必须的。 在某些情况下,select可能会直接放在一个独立的goroutine中,没有外层的for循环。 这通常发生在你知道只会有一次或有限次操作的情况下。 例如,你可能有一个简单的goroutine,它等待一个特定的channel信号,然后执行一次 阅读全文

posted @ 2024-05-21 22:52 ercom 阅读(555) 评论(2) 推荐(1)

golang 类型断言和 var _ T = expression 写法
摘要:类型断言(Type Assertion)在Go语言中用于检查一个接口值的具体类型,并从中获取该类型的值。 它允许你声明并访问接口变量内部存储的非接口类型的值。有两种主要的类型断言形式: value, ok := i.(T):这种形式会检查接口 i 是否持有类型 T 的值。如果成功,value 将是 阅读全文

posted @ 2024-05-21 22:45 ercom 阅读(62) 评论(0) 推荐(0)

golang context 特点,和自己定义分类有什么区分
摘要:context 包的特点包括: 1 信号传递: 取消信号:context 提供了一个取消机制,允许一个父级 goroutine 在必要的时候通知其子级 goroutines 任务应该停止执行。 截止时间:可以设置一个截止时间,当超过这个时间时,上下文自动变为取消状态。 超时:类似截止时间,但通常基于 阅读全文

posted @ 2024-05-16 22:23 ercom 阅读(31) 评论(0) 推荐(0)

go generate ./... 含义
摘要:go generate ./... 是一个Go语言中的命令,用于在编译前自动执行代码生成任务。 这个命令会遍历当前包及其子包中的所有源代码文件,查找所有包含特殊注释 //go:generate 的行。 这些注释后面跟着的是应该执行的命令,用于生成额外的源代码、元数据或其他编译时所需的文件。 执行 g 阅读全文

posted @ 2024-04-28 23:22 ercom 阅读(212) 评论(0) 推荐(0)

golang代码组织的核心思想与最佳实践
摘要:1/golang代码组织的核心思想 Go语言(Golang)在代码组织上的核心思想是模块化和封装,主要体现在以下几个方面: 1、包(Packages): Go语言通过包(Packages)来组织代码,每个包包含一组相关联的.go源文件。包提供了一种天然的代码边界,允许开发者将相关功能逻辑组合在一起, 阅读全文

posted @ 2024-03-29 18:32 ercom 阅读(78) 评论(0) 推荐(0)

[Go] VsCode 的 Golang 环境设置与代码跳转支持
摘要:终端执行: go env -w GO111MODULE=on go env -w GOPROXY=https://goproxy.io,direct WIndows下自定义指定 GOPATH 路径: 在 vscode 中使用的配置: 1. 安装 Go 扩展。关闭 vscode 重新打开 golang 阅读全文

posted @ 2023-08-31 11:31 ercom 阅读(4784) 评论(0) 推荐(2)

[Go] 浅谈 Golang Chan 通信与死锁:all goroutines are asleep - deadlock
摘要:Channel创建方式: var c1 chan [value type] c1 = make([channel type] [value type], [capacity]) [value type] 定义的是 Channel 中所传输数据的类型。 [channel type] 定义的是 Chan 阅读全文

posted @ 2022-01-25 18:33 ercom 阅读(225) 评论(0) 推荐(0)

[Go] Golang并发控制: WaitGroup 含义和常规用法
摘要:一个 WaitGroup 等待一个 goroutine 集合的结束。 主 goroutine 调用 Add 设置需要等待的 goroutine 数量。 接下来每个 goroutine 运行并在结束时调用 Done。 同时,Wait 可以用来阻塞直到所有的 goroutine 结束。 package 阅读全文

posted @ 2022-01-24 18:43 ercom 阅读(191) 评论(0) 推荐(0)

[Go] Golang Context 包的注意点
摘要:Golang context 包,定义了context 类型,携带截止日期,取消信号,和其它跨API请求作用域及进程间的值。 到服务器的请求应该创建一个 Context,服务器对外的调用应该接受一个Context。 函数之间的调用链必须传递 Context,可选地可以用 WithCancel、Wit 阅读全文

posted @ 2022-01-24 18:38 ercom 阅读(90) 评论(0) 推荐(0)

[Go] Go Module 私有依赖包的管理
摘要:一些自研开发的第三方包,特别是一些业务依赖包,是不允许公开下载的(私有库),并且版本库也可能不支持HTTPS协议, 因此无法使用 go get 或者 go.mod 进行下载和管理,可以通过 GOPRIVATE 的方式设置私有包有效域名。 命令行方式: export GOPROXY=https://g 阅读全文

posted @ 2022-01-08 22:32 ercom 阅读(252) 评论(0) 推荐(0)

[Go] go build 和 go install 的区别
摘要:$ go build 源文件及其包依赖 编译成二进制。 install 不仅执行build过程 而且会把编译的二进制放到 $GOPATH/bin/,包放到 $GOPATH/pkg/ Link:https://www.cnblogs.com/farwish/p/15722986.html 阅读全文

posted @ 2021-12-23 19:29 ercom 阅读(82) 评论(0) 推荐(0)

上一页 1 2 3 4 下一页