funcUserInfo := func(userIdArr []int) (map[int]*user.ModelUserResp, error) {
sort.Ints(userIdArr)
userIdArrUnDuplicates := make([]int32, 0)
for i := 0; i < len(userIdArr); i++ {
if i > 0 && userIdArr[i-1] == userIdArr[i] {
continue
}
userIdArrUnDuplicates = append(userIdArrUnDuplicates, int32(userIdArr[i]))
}
userApi := client.NewUserAPI()
usersReq := user.ModelUserIDs{
UserIDs: userIdArrUnDuplicates,
}
usersRes := make([]user.ModelUserResp, 0)
usersRes, _, err = userApi.UsersInfoInternal(context.TODO(), usersReq)
if err != nil {
logrus.Errorf("user server error: %v", err)
}
userMap := make(map[int]*user.ModelUserResp)
for _, v := range usersRes {
v2 := v
userMap[int(*v.Id)] = &v2
}
return userMap, nil
}
userMap, _ := funcUserInfo(userIdArr)
splitfunc := func(req string) []string {
if req == "" {
return make([]string, 0)
} else {
return strings.Split(req, ",")
}
}
for _, champion := range champions {
championRes := &ChampionRes{
GameID: champion.GameID,
Version: champion.Version,
VersionName: champion.VersionName,
ChampionNO: champion.ChampionNO,
VersionID: champion.VersionID,
Title: champion.Title,
Name: champion.Name,
Abbr: champion.Abbr,
Alias: splitfunc(champion.Alias),
Img: champion.Img,
Origin: champion.Origin,
Class: champion.Class,
Cost: champion.Cost,
Health: splitfunc(champion.Health),
Armor: splitfunc(champion.Armor),
Mr: splitfunc(champion.Mr),
Damage: splitfunc(champion.Damage),
AtkSpd: splitfunc(champion.AtkSpd),
CritRate: splitfunc(champion.CritRate),
Range_: splitfunc(champion.Range_),
StartingMana: splitfunc(champion.StartingMana),
Mana: splitfunc(champion.Mana),
PhysDmg: splitfunc(champion.PhysDmg),
MagicDmg: splitfunc(champion.MagicDmg),
PhysDef: splitfunc(champion.PhysDef),
MagicDef: splitfunc(champion.MagicDef),
PlaDam: splitfunc(champion.PlaDam),
Items: splitfunc(champion.Items),
SkillNO: champion.SkillNO,
}
championsRess = append(championsRess, championRes)
}
区分
func (this *CronManager) wrap(name string, f func() error) func() { //就是返回一个函数
return func() {
defer func() {
if err := recover(); err != nil {
logger.Error("cronjob %s panic: %v, %s", name, err, debug.Stack())
}
}()
err := f() //看起来好别扭
if err != nil {
logger.Error("cronjob %s error: %s", name, err.Error())
}
}
}
内部函数传参
go func(j int) {
oneClient := dcipayConnPool.Get()
req := &Test{
Code: "req",
Msg: "tom" + strconv.Itoa(j),
}
resp := &Test{}
err := oneClient.Call(context.Background(), "Echo", req, resp)
if err != nil {
log.Errorf("error: %s", err)
} else {
log.Infof("resp: %v", resp)
}
wg.Done()
}(i) // ##########