
Go
永远的麦田
资深程序员,爱程序,爱生活
展开
-
go里面关于超时的设计
从运行结果看,只要超过700ms没有数据进入,就会引发定时器的回调,并且从2500ms的超时看只激发了一次,说明这里的定时器只会运行一次。没有超过700ms的,由于定时器被重置了,又开始等700ms才会运行,运行SQL_Entity_3时,定时器被删除,从结果看,虽然间隔是900ms远超700ms,依然定时器没有执行。通道中夹杂一个timer定时器的处理,若通道在700ms内有数据,则定时器被重置,重新等待700ms再调用定时器处理函数,否则,700ms时间到,运行定时器处理函数。原创 2023-08-21 10:30:51 · 577 阅读 · 0 评论 -
go语言借用github链接调用本地gitlab库
go语言的发布和库的使用通常需要将相关代码发布到github中,通常我们的代码是存储在公司级的gitlab中,如果也能像github中一样的调用自己写的库呢 假设公司的内网gitlib为http://192.168.5.100/stock 命令行中输入: go env -w GOPRIVATE=github.com/stock 再在命令行中输入: git config --global url."http://192.168.5.100/stock/".insteadof "https://g原创 2022-04-22 09:29:18 · 701 阅读 · 0 评论 -
go学习 interface
假设你需要解析一堆数据,在解析的过程中发现某个字段的值不同,即为一种类型,每种类型对应的是一个完全不同的结构。比如1对应的结构为user,2对应的为desk,数据中有很多这样的类型,我们解析不同的结构后希望能存储结构体,然后在使用时,可以将这些结构体展开,并根据不同类型做出不同的处理。 我们假设有两种类型,一种为User, 一种为Desk type User struct { name string age int } type Desk struct { price float64 si原创 2021-08-03 00:48:47 · 126 阅读 · 0 评论 -
go学习 channel
要考虑这样一个场景,一个线程不停生产数据,另一个线程不停消耗数据,这样的场景用channel最是方便。原先看到的channel都是传递基本数据类型的,如果传递更复杂的担心有问题。于是模拟了下面的程序 GenerateData用来生产一个比较复杂的数据, RecvData用来接受生产出来的数据,收到后打印出来。 程序在一开始时先创建一个channel结构的变量c, 然后用go GenerateData创建生产数据的线程,再用go RecvData创建接收数据的线程,从打印结果看,收到的是一个指针,原创 2021-07-28 00:07:49 · 75 阅读 · 0 评论 -
go 语言学习 返回一个函数
最近看go语言,发现一个有意思的语法,原文是描述匿名函数的,不过从这里面发现一个有意思的东西,即我们可以返回一个函数,并且可以不断调用此函数。由于之前已经完成了外层函数的调用,实际上相当于外层函数保存我们所需的数据。 源代码如下: package test import ( "testing" ) func squares() func() int { var x int return func() int { x++ return x * x } } func TestFunc(原创 2021-07-25 00:37:10 · 1056 阅读 · 0 评论