用go语言实现一个课表推送系统

项目介绍基于 golang 的一个定时消息推送系统。工作原理: CALLBACK流程:系统由 阻塞协程 触发器 任务管理器 三部分组成。实现流程: 务管理内有一个任务列表,通过注册任务,来向任务列表添加任务。然后启动一个阻塞协程去轮询任务列表,并且将当前时间通知到每一个任务。具体触发操作在任务函


go语言-module

开启goModuleset GO111MODULE=on goproxy设置模块代理加速下载goProxy基本命令go mod init 生成gomod文件go mod download 下载依赖go mod tidy 整理依赖go mod graph 查看依赖go mode edit 编辑mod文


go语言-channel和range,select

channel和rangepackage mainimport "fmt"func main() {c:= make(chan int)go func() {for i:=0;i<3;i++{c<-i}// 当不需要再次发送数据后需要关闭channel,如果被关闭可能


go语言-channel

作用goroutine之间互相通信无缓冲channelmake(chan xxx)无缓冲的channel会阻塞,必须等待从channel取出才结束package mainimport "fmt"func main() {// 无缓冲channelc:=make(chan int)


go语言-goroutine

创建一个协程golang创建协程的关键字是gogo xxxx()package mainimport ("fmt""time")func task(id int) {for {fmt.Println("child task:",id)t


go语言-JSON

json标签type UserInfo struct {Name string `json:"name"`Email string `json:"email"`Password string `json:"password"`


go语言-结构体标签

用法type Box struct {Width int `info:"width" desc:"盒子宽度"`Height int `info:"height" desc:"盒子高度"`}通过反射获取package ma


go语言-反射

获取类型和值TypeOfValueOfpair<Type,Value>package mainimport ("fmt""reflect")func main() {var num int =10fmt.Println("type:&qu


go语言-interface

interface所有类型都实现了 interface{} 接口使用interface可以实现类型断言package mainimport "fmt"// 万能数据类型func Func(arg interface{}) {// 类型断言// xxx.(type)val,ok