go结构体嵌套递归调用的2种方式--struct和func

1:
需要嵌套部分是结构体类型的,例如:快照 套 子快照,但是子快照长得和快照一样(同一份结构体),可以无限递归套娃????

// ResRootSnapshot ...
type ResRootSnapshot struct {
	// 快照标识
	Urn string `json:"urn"`
	// 访问快照对应的uri
	URI 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 main

import "fmt"

type A struct {
	check func() int
	code  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()
}
上一篇:【氮化镓】微波脉冲对GaN HEMT失效的影响


下一篇:【机器学习算法介绍】(5)支持向量机算法