go语言中如何模拟100个IP同时并发访问服务器,每个ip要重复访问1000次。每个Ip一分钟之内只能访问一次?

package  main

import (
    "time"
    "sync"
    "fmt"
    "sync/atomic"
)

type  Ban struct {
    visitIPs  map[string]struct{}  //这个是什么意思
}

func NewBan() *Ban{
    return &Ban{visitIPs:make(map[string]struct{})}
}
//判断ip是否存在
func (o *Ban) visit(ip string)bool{
    mapMutex.Lock()
    defer mapMutex.Unlock()
    if _, ok :=o.visitIPs[ip];ok{
        return true
    }
    o.visitIPs[ip]= struct{}{}
    go o.invalidAfter1Min(ip)
    return  false
}
func (o *Ban) invalidAfter1Min(ip string){
    time.Sleep(time.Minute *1)
    mapMutex.Lock()
    visitIPs :=o.visitIPs
    delete(visitIPs,ip)
    o.visitIPs=visitIPs
    mapMutex.Unlock()
}
var mapMutex *sync.Mutex   //声明锁

func main(){
    mapMutex =new(sync.Mutex)  //创建一个锁
    var success int64    //声明
    ban :=NewBan()
    wg :=new(sync.WaitGroup)
    for i :=0;i<1000;i++{
        for j :=0;j<1000;j++{
            wg.Add(1)
            //fmt.Println('j',j)
            fmt.Println(j)
            ipEnd :=j
            go func() {
                defer  wg.Done()
                ip :=fmt.Sprintf("192.168.1.%d",ipEnd)
                //fmt.Println(ipEnd)
                if !ban.visit(ip){
                    atomic.AddInt64(&success,1)
                }
            }()
        }
    }
    wg.Wait()
    fmt.Println("success:",success)


}