U87
V2EX  ›  Go 编程语言

初学 go,请问这是闭包的高阶函数吗?

By U87 at 2022 年 10 月 18 日 · 3292 次点击
func (apiService *ApiService) DeleteApisByIds(ids request.IdsReq) (err error) {
var apis []system.SysApi
err = global.GVA_DB.Find(&apis, "id in ?", ids.Ids).Delete(&apis).Error
if err != nil {
return err
} else {
for _, sysApi := range apis {
success := CasbinServiceApp.ClearCasbin(1, sysApi.Path, sysApi.Method)
if !success {
return errors.New(sysApi.Path + ":" + sysApi.Method + "casbin 同步清理失败")
}
}
e := CasbinServiceApp.Casbin()
err = e.InvalidateCache()
if err != nil {
return err
}
}
return err
}
咋看别人的例子都是 DeleteApisByIds 应该在匿名函数前面呢
6 条回复  •  2022-10-19 11:06:20 +08:00
wangnimabenma
   1
wangnimabenma  
   2022 年 10 月 18 日
```go
func (apiService *ApiService) DeleteApisByIds(ids request.IdsReq) (err error) {
var apis []system.SysApi
err = global.GVA_DB.Find(&apis, "id in ?", ids.Ids).Delete(&apis).Error
if err != nil {
return err
} else {
for _, sysApi := range apis {
success := CasbinServiceApp.ClearCasbin(1, sysApi.Path, sysApi.Method)
if !success {
return errors.New(sysApi.Path + ":" + sysApi.Method + "casbin 同步清理失败")
}
}
e := CasbinServiceApp.Casbin()
err = e.InvalidateCache()
if err != nil {
return err
}
}
return err
}
```
U87
   2
U87  
OP
   2022 年 10 月 18 日
@wangnimabenma 请问 func 是匿名函数, DeleteApisByIds 又是个函数,这是什么写法呢?
dilu
   3
dilu  
   2022 年 10 月 18 日
func 是声明函数,不是声明匿名函数....
beixiao
   4
beixiao  
   2022 年 10 月 18 日 via iPhone
https://go.dev/tour/methods/4
这叫指针接收者方法,建议 op 先把基础大概过一遍
U87
   5
U87  
OP
   2022 年 10 月 19 日
@beixiao 好的谢谢,我先过遍基础,别的语言转过来的,有点自大了,直接撸项目。。
Yooloo
   6
Yooloo  
   2022 年 10 月 19 日
你这不是初学了, 你这是没学啊🥺
The Go Programming Language
› http://golang.org/
› Go Playground
Go Projects
› Revel Web Framework
© 2026 V2EX · 32ms · 3.9.8.5