golang
小吴同学GOGOGO
一只怀揣梦想的阿柴;五角场某高校同学、某大厂打工人;兴趣方向:OLAP基础架构、大数据存储和计算引擎;「计算机小屋」
展开
-
golang中反射三大原则 - 【基础版】
go 语言中反射的三大原则反射是go语言中一个非常重要的特性,go语言圣经是这样定义反射的:go语言提供了一种机制在运行时更新变量和检查他们的值、调用他们的方法,但是在编译的时候并不知道这些变量的具体类型,这称为反射机制。通俗来讲:就是说,我们编写的go代码,在程序编译的时候,并不知道某个变量的具体类型,但是我们可以通过在运行时利用反射的机制,来获取这个变量的类型,以及其具体的值。那么,go语言中就提供了实现这样一个机制的一系列方法,而这些方法在reflect包中。首先,我们来介绍一些go中r原创 2022-05-14 01:21:07 · 288 阅读 · 0 评论 -
go实现web服务器框架-01
web 服务器是可以接收web请求并返回对应的请求数据的后端平台,go语言内置了丰富的关于http和tcp开发的工具包,今天,我们就利用基于http的工具开发web服务器框架吧。今天是最基础入门的代码,所实现的功能很简单:当运行程序之后,在浏览器端输入对应的请求地址,此框架能自动处理。开始动手吧:package mainimport ( "fmt" "log" "net/http")/**go 语言内置了net/http库,封装了http网络编程的基础的接口,我们实现的lite_w原创 2022-05-05 00:44:01 · 475 阅读 · 0 评论 -
go - select 从已经关闭的channel中读取数据注意的问题 -可能会发生的dead lock现象
相信大家在从channel中读取数据的时候,有时候会遇到dead lock的情况,也就是死锁的情况,那这种情况一般是怎么出现的?又该怎么解决呢?下面我们来讨论一下。出现的情况和解决方法1 当一个channel中没有数据,而直接读取的时候,会发生死锁:package mainimport ( "fmt")func main() { channel := make(chan int) x := <-channel fmt.Println(x)原创 2022-05-02 22:48:17 · 1617 阅读 · 0 评论 -
go-channel高并发编程案例- 实现协程池
package exampleimport ( "fmt" "time")/* 协程池架构: 协程池中有任务队列(JobsChannel)和多个工作协程(WorkNum); 外部通过向EntryChannel中传递Task,然后JobsChannel接收Task并调用工作协程进行处理。*/// Task ---------------------关于Task角色的任务---------////定义一个任务类型 Tasktype Task struct { f func()原创 2022-05-02 18:53:39 · 657 阅读 · 0 评论 -
GO语言defer和return 的执行顺序
GO语言的defer和return原创 2022-04-30 02:59:16 · 857 阅读 · 2 评论