
golang
ningto.com
个人站点:https://ningto.com
展开
-
golang vscode launch.json配置
每次调试运行都要先打开main.go然后在菜单里点击Run->Start Debugging或者F5比较麻烦,主要是每次都要定位了main.go文件,这样当我编辑完其他文件后,都要切换一下才能运行。下面增加一下Launch.json配置就可以直接点击左侧的debug按钮运行了,在Launch菜单下的Add Configuration,内容如下:{ // Use IntelliSense to learn about possible attributes. // Hover to原创 2021-01-13 14:29:10 · 11783 阅读 · 1 评论 -
golang 控制goroutine调度顺序
使用go关键字就可以很容易的启动一个goroutine,启动后他们的执行顺序是不能保证的。如果有多个goroutine,怎样按照我想要的顺序来执行呢?如:a1在b1和c1后面执行(b1和c1都执行完a1才能执行)d1在a1后面执行(d1执行完才能执行a1)e1在b1或者c1后面执行(b1或者c1有一个执行完就可以执行e1)下面代码演示了怎样解决上面问题:event/event.gopackage eventimport ( "reflect" "sync" "sync/atomi原创 2021-01-12 07:54:03 · 1011 阅读 · 0 评论 -
golang接口型函数作用
在我们使用golang写http服务的时候通常会使用http.Handle来注册pattern对应的Handler,其实这里就使用到了接口型函数,源码定义如下:type Handler interface { ServeHTTP(ResponseWriter, *Request)}type HandlerFunc func(ResponseWriter, *Request)func (f HandlerFunc) ServeHTTP(w ResponseWriter, r *Request)原创 2021-01-12 07:47:04 · 483 阅读 · 1 评论 -
gin多模板、模板嵌套使用方法
在做一个web应用的时候,通常多个页面会共用同一个模板,只是每个页面的内容不同。如网页的导航栏、菜单栏、footer是共用的。我们写代码的时候也只需要写一个主模板页面frame.html,内容空出来给具体的页面来实现,如:主页index.html,文章页面post.html,错误页面error.html等等,在渲染页面的时候只需要渲染对应的具体页面就可以了,隐藏了主模板。路由代码演示如下:app.GET("/home", func(c *gin.Context) { //.... c.原创 2021-01-07 09:53:55 · 3232 阅读 · 1 评论 -
PC微信本地图片格式转化
PC端微信收到的图片存储在本地,我们可以打开微信的设置->通用设置->文件管理->打开文件夹,在FileStorage/Image日期目录下找到图片文件,但是它经过了简单的加密并且后缀为.dat。通过下面这个算法可以将dat文件还原成原始图片,目前支持jpg,gif,png三种格式,其他格式应该也同理。先直接上代码,golang代码如下:const ( jpg0 = 0xFF jpg1 = 0xD8 gif0 = 0x47 gif1 = 0x49 png0 = 0x89原创 2021-01-07 09:49:33 · 3168 阅读 · 0 评论 -
设置bing桌面壁纸
golang语言编写,设置windows桌面壁纸,图片来自于必应网站(cn.bing.com)github源码地址:https://github.com/tujiaw/gowallpaper有兴趣的Star一下吧编译好的程序:https://pan.baidu.com/s/1l5OW9GeuUF0r5TFaBWkWZg(提取码:pcqh)直接双击运行,显示如下:设置微软必应的壁纸,用法如下:day - 每天更新壁纸now - 设置当天壁纸prev - 设置前一天壁纸原创 2021-01-07 09:37:20 · 1527 阅读 · 1 评论 -
golang 中介者模式
中介者模式是一种行为设计模式。此模式是创建一个中介对象,以防止对象之间的直接交互,从而避免它们之间的直接依赖关系。一个很好的中介模式的例子是铁路系统平台,两列火车之间是相互独立的,站长充当调停者,使站台仅对其中一列列车可用。列车通过站长交互,站长维持着等候火车的队列,当任何一辆列车离开站台时,通知下一辆列车可以进入了。注意在下面的代码中,站长是如何充当火车和站台之间的中间人。旅客列车(passengerTrain)和货物列表(goodsTrain)实现了列车接口站长(stationManger)实原创 2021-01-06 11:42:46 · 159 阅读 · 0 评论 -
golang 单例模式
单例模式(Singleton Pattern)是最简单的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。要保证线程安全package mainimport ( "fmt" "sync" "time")type Singleton struct {}var singleton *Singletonvar singletonOnce sync.Oncefunc Instance() *Singleton { singletonOnce.Do(fu原创 2021-01-06 11:41:55 · 325 阅读 · 0 评论