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()
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值