为了账号安全,请及时绑定邮箱和手机立即绑定

内部循环定义父链接

内部循环定义父链接

Go
蝴蝶刀刀 2023-06-19 14:04:53
我想循环我的表的名称以添加由符号“ _”定义的关联。如果表a_b然后存在a则, 。最后,我不必打印名称中包含“”的表ba = [b]b = [a]_结构体// Table with Fields and Assoctype Table struct {    Name       string    Assoc      []Assoc}// Assoc is a name of associated Tabletype Assoc struct {  Name string}tables := []string{    "a",    "b",    "c",    "d",    "f",    "a_b",    "a_c",    "a_d_f",    "c_d",      }var tbls []Tablefor _, t := range tables {    if strings.Contains(t, "_") {        // Split to find "_" like assoc := strings.Split(t, "_") ?        // append in struct "Table{Name:a, Assoc:  [b,c,d,f]}"        // append in struct "Table{Name:b, Assoc:  [a]}"        // append in struct "Table{Name:c, Assoc:  [a,d]}"        // append in struct "Table{Name:d, Assoc:  [a,c,f]}"        // append in struct "Table{Name:f, Assoc:  [a,d]}"          } else {        n := Table{            Name: t,        }        tbls = append(tbls, n)    }}像这样返回fmt.Println(tbls):[{a [b,c,d,f]} {b [a]} {c [a,d]} {d [a,c,f]} {f [a,d]}]去游乐场
查看完整描述

1 回答

?
天涯尽头无女友

TA贡献1831条经验 获得超9个赞

使用地图完成上述操作 https://play.golang.org/p/8C5M0L-es6o

package main


import (

    "fmt"

    "strings"

)


// Table with Fields and Assoc

type Table struct {

    Name  string

    Assoc map[string]int

}


// Assoc is a name of associated Table

// type Assoc struct {

//  Name string

// }


func main() {

    tables := []string{

        "a",

        "b",

        "c",

        "d",

        "f",

        "a_b",

        "a_c",

        "a_d_f",

        "c_d",

    }


    var tbls = make(map[string]map[string]int)


    for _, t := range tables {

        if strings.Contains(t, "_") {

            splitAssocs := strings.Split(t, "_")            

            for i:=0;i<=len(splitAssocs)-2;i++ {

                for j:=(i+1);j<=len(splitAssocs)-1;j++{

                    _, ok := tbls[splitAssocs[i]]

                    if !ok{

                        tbls[splitAssocs[i]] = make(map[string]int)

                    }

                     _, ok = tbls[splitAssocs[j]]

                    if !ok{

                        tbls[splitAssocs[j]] = make(map[string]int)

                    }

                    tbls[splitAssocs[i]][splitAssocs[j]] = 1

                    tbls[splitAssocs[j]][splitAssocs[i]] = 1

                }


            }


        } else {

            _, ok := tbls[t]            

            if !ok{

                tbls[t] = make(map[string]int)

            }

        }


    }


    fmt.Println(tbls)

}


查看完整回答
反对 回复 2023-06-19
  • 1 回答
  • 0 关注
  • 104 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信