tx面试题目

package main

import (
"fmt"
"math/rand"
"time"
)

type Option struct {
ID string json:"id"
Text string json:"text"
}

type Question struct {
Title string json:"title"
RelateBY string json:"relateBY,omitempty"
Options []Option json:"options"
}

type treeStruct struct {
id int
name string
children []treeStruct
}

var (
subjecy [][]string
)

func main() {
var questions = map[string]Question{
"gwc1": {
Title: "多选题",
Options: []Option{
{ID: "1", Text: "多选题2"},
{ID: "2", Text: "多选题3"},
{ID: "3", Text: "多选题4"},
},
},
"plc8": {
RelateBY: "gwc1",
Title: "单选题",
Options: []Option{
{ID: "4", Text: "单选题2"},
{ID: "5", Text: "单选题3"},
{ID: "6", Text: "单选题4"},
},
},
"xkeb": {
RelateBY: "plc8",
Title: "下拉题",
Options: []Option{
{ID: "7", Text: "下拉选项2"},
{ID: "8", Text: "下拉选项3"},
{ID: "9", Text: "下拉选项4"},
},
},
}

newArr := getAllOptions(questions, "xkeb")
// fmt.Printf("%+v\n", questions)
fmt.Println(newArr)

subjecy = [][]string{
	{"a", "甲", "1"},
	{"a", "甲", "2"},
	{"a", "乙", "3"},
	{"a", "乙", "4"},
	{"a", "丙", "5"},
	{"b", "丁", "6"},
	{"b", "丁", "7"},
}
newsubjecy := genCascadeTree(subjecy)
// fmt.Println(newsubjecy)

fmt.Printf("%+v\n", newsubjecy)

}

func getAllOptions(arr map[string]Question, id string) []string {
var list []string
if _, ok := arr[id]; ok {
for _, val := range arr[id].Options {
list = append(list, val.Text)
}
list = append(list, getAllOptions(arr, arr[id].RelateBY)...)
}
return list
}

func genCascadeTree(arr [][]string) map[string]treeStruct {
tree := map[string]treeStruct{}
rand.Seed(time.Now().UnixNano())
for _, v := range arr {
if _, ok := tree[v[0]]; !ok {
tree[v[0]] = treeStruct{
id: rand.Intn(100) + 100,
name: v[0],
children: []treeStruct{},
}
}
found := false
for kk, vv := range tree[v[0]].children {
if vv.name == v[1] {
found = true
tree[v[0]].children[kk].children = append(tree[v[0]].children[kk].children, treeStruct{
name: v[2],
id: rand.Intn(100) + 100,
})
}
}
if !found {
tmp := tree[v[0]]

		tmp.children = append(tmp.children, treeStruct{
			name: v[1],
			id:   rand.Intn(100) + 100,
			children: []treeStruct{treeStruct{
				name: v[2],
				id:   rand.Intn(100) + 100,
			}},
		})
		tree[v[0]] = tmp
	}
}

return tree

}

posted on 2025-07-13 16:28  木林coder  阅读(7)  评论(0)    收藏  举报

导航