1:
需要嵌套部分是结构体类型的,例如:快照 套 子快照,但是子快照长得和快照一样(同一份结构体),可以无限递归套娃🪆
// ResRootSnapshot ...
type ResRootSnapshot struct {// 快照标识Urn string `json:"urn"`// 访问快照对应的uriURI string `json:"uri"`// 快照别名Name string `json:"name"`// 快照描述Description string `json:"description"`// 快照创建时间CreateTime interface{} `json:"createTime"`// 快照状态Status string `json:"status"`// 快照类型Type string `json:"type"`// 子快照ChildSnapshots []ResRootSnapshot `json:"childSnapshots,omitempty"`
}// ResSnapshotList ...
type ResSnapshotList struct {CurrentSnapshot ResCurrentSnapshot `json:"currentSnapshot"`RootSnapshots []ResRootSnapshot `json:"rootSnapshots"`
}
2:
方法类型,结构体中一个字段是一个方法,需要递归调用的场景:我们让GPT写一个示例:
写一个go结构体A, A里有一个方法类型的字段check ,一个int类型的code,写个入口 递归调用自己check,并给出出口为code=200
package mainimport "fmt"type A struct {check func() intcode int
}func main() {a := A{check: func() int {// 递归调用自身的 check 方法return a.check()},}// 调用入口的 check 方法result := a.check()fmt.Println("Result:", result)
}func (a A) check() int {// 设置出口条件if a.code == 200 {return 200}// 继续递归调用自身的 check 方法// 这里可以根据具体需求进行逻辑处理return a.check()
}