ログイン中のQiita Team
ログイン中のチームがありません

Qiita Team にログイン
コミュニティ
OrganizationイベントアドベントカレンダーQiitadon (β)
サービス
Qiita JobsQiita ZineQiita Blog
Go
tips
0
どのような問題がありますか?
Organization

Golangサンプルコード:自己参照構造体のデータを再帰関数を使用してプリントする

今日書いたサンプルコード

自己参照構造体のデータを再帰関数を使用してプリントします。
マップを使って無限ループを回避。

package main

import "fmt"

type Node struct {
    ID    int
    Child *Node
}

func (n *Node) PrintID() {
    check := map[int]bool{}
    var printID func(n *Node)
    printID = func(n *Node) {
        fmt.Printf("%d\n", n.ID)
        check[n.ID] = true
        if n.Child != nil {
            if _, done := check[n.Child.ID]; !done {
                printID(n.Child)
            }
        }
    }
    printID(n)
}

func main() {

    n1 := Node{ID: 1}
    n2 := Node{ID: 2}
    n3 := Node{ID: 3}

    n1.Child = &n3
    n2.Child = &n1
    n3.Child = &n2

    n := Node{ID: 4, Child: &n1}
    n.PrintID()
}

3000文字Tips - 知ると便利なTipsをみんなへ届けよう
https://qiita.com/official-events/d523df99d6479293ffa7

ユーザー登録して、Qiitaをもっと便利に使ってみませんか。
  1. あなたにマッチした記事をお届けします
    ユーザーやタグをフォローすることで、あなたが興味を持つ技術分野の情報をまとめてキャッチアップできます
  2. 便利な情報をあとで効率的に読み返せます
    気に入った記事を「ストック」することで、あとからすぐに検索できます
upstairs
自動視覚学習センサシステム・AVSシステム クラウド開発支援・研究開発支援サービス 研究開発事業

コメント

リンクをコピー
このコメントを報告
0
どのような問題がありますか?
あなたもコメントしてみませんか :)
ユーザー登録
すでにアカウントを持っている方はログイン
記事投稿イベント開催中
マイクロソフト認定資格を取得する際の学習方法や経験談、おすすめ学習リソースなどを紹介しよう!
~
0
どのような問題がありますか?
ユーザー登録して、Qiitaをもっと便利に使ってみませんか

この機能を利用するにはログインする必要があります。ログインするとさらに下記の機能が使えます。

  1. ユーザーやタグのフォロー機能であなたにマッチした記事をお届け
  2. ストック機能で便利な情報を後から効率的に読み返せる
ユーザー登録ログイン
ストックするカテゴリー