mirror of
https://github.com/alibaba/higress.git
synced 2026-02-27 22:20:57 +08:00
34 lines
674 B
Go
34 lines
674 B
Go
package main
|
|
|
|
func GetMaxDepth(data interface{}) int {
|
|
type item struct {
|
|
value interface{}
|
|
depth int
|
|
}
|
|
|
|
maxDepth := 0
|
|
stack := []item{{value: data, depth: 1}}
|
|
|
|
for len(stack) > 0 {
|
|
currentItem := stack[len(stack)-1]
|
|
stack = stack[:len(stack)-1]
|
|
|
|
if currentItem.depth > maxDepth {
|
|
maxDepth = currentItem.depth
|
|
}
|
|
|
|
switch v := currentItem.value.(type) {
|
|
case map[string]interface{}:
|
|
for _, value := range v {
|
|
stack = append(stack, item{value: value, depth: currentItem.depth + 1})
|
|
}
|
|
case []interface{}:
|
|
for _, value := range v {
|
|
stack = append(stack, item{value: value, depth: currentItem.depth + 1})
|
|
}
|
|
}
|
|
}
|
|
|
|
return maxDepth
|
|
}
|