From 0faa56d3f0611b3c475b9f176ddecc209901aa5d Mon Sep 17 00:00:00 2001 From: qydysky Date: Mon, 12 Apr 2021 15:16:27 +0800 Subject: [PATCH] public struct --- limit/Limit.go | 16 +++++----------- limit/Limit_test.go | 7 ------- 2 files changed, 5 insertions(+), 18 deletions(-) diff --git a/limit/Limit.go b/limit/Limit.go index bacfbe5..6489be7 100644 --- a/limit/Limit.go +++ b/limit/Limit.go @@ -4,7 +4,7 @@ import ( "time" ) -type limit struct { +type Limit struct { maxNum_in_period int ms_in_period int ms_to_timeout int @@ -13,15 +13,15 @@ type limit struct { // create a Limit Object // it will allow maxNum_in_period requests(call TO()) in ms_in_period. if the request(call TO()) is out of maxNum_in_period,it will wait ms_to_timeout -func New(maxNum_in_period,ms_in_period,ms_to_timeout int) (*limit) { - object := limit{ +func New(maxNum_in_period,ms_in_period,ms_to_timeout int) (*Limit) { + object := Limit{ maxNum_in_period:maxNum_in_period, ms_in_period:ms_in_period, ms_to_timeout:ms_to_timeout, channl:make(chan struct{},maxNum_in_period), } - go func(object *limit){ + go func(object *Limit){ for object.maxNum_in_period > 0 { for i:=1;i<=object.maxNum_in_period;i++{ object.channl <- struct{}{} @@ -34,16 +34,10 @@ func New(maxNum_in_period,ms_in_period,ms_to_timeout int) (*limit) { } // the func will return true if the request(call TO()) is up to limit and return false if not -func (l *limit) TO() bool { +func (l *Limit) TO() bool { select { case <-l.channl :; case <-time.After(time.Duration(l.ms_to_timeout)*time.Millisecond):return true; } return false -} - -//assert interface{} to *limit -func GetStruct(i interface{}) (l *limit,ok bool) { - l,ok = i.(*limit) - return } \ No newline at end of file diff --git a/limit/Limit_test.go b/limit/Limit_test.go index 908590e..be2730f 100644 --- a/limit/Limit_test.go +++ b/limit/Limit_test.go @@ -51,11 +51,4 @@ func Test_4(t *testing.T){ time.Sleep(time.Millisecond) } t.Log(pass) -} - -func Test_5(t *testing.T){ - l := New(0,0,10) - if v,ok := GetStruct(interface{}(l));!ok{ - t.Log(`error struct`,v) - } } \ No newline at end of file -- 2.39.2