1

私はGoから始めていますが、公式ドキュメントは、Go を既に知っていて、調べたいだけの人向けのようです。私はここで正しい方向に少し微調整することを望んでいます。

私がやろうとしていること:同じ基本特性を共有するいくつかの要素で構成されるBurntSushi のTOMLTOML パーサーを使用して構成ファイルを解析します。

私が立ち往生しているところ:各アイテムのそれぞれの部分をアイテムと一緒にリストしたい. これまでのところ、インデックスで取得できるのはそのうちの 1 つだけです。私が探しているのは、特定のインデックスだけでなく、それぞれのインデックスのすべてのサブ部分をリストする方法で設定する方法です。JSONリストを取得できますが、それを適応させて通常の出力[:]を取得できないようです。

最初は[[item.part.001]]、オンラインの JSON パーサーで正しく見えたので、などと考えていましたが、それを Go に適切に読み込む方法を理解できませんでした。とにかく立ち往生しているので、どちらのタイプにもオープンです。

前もって感謝します。最小限の作業例を簡略化したファイルを次に示します。


デモ.toml

# — — — — —  — — — — — — — — — — — — — — — — — — 
#                   First Item
# — — — — —  — — — — — — — — — — — — — — — — — — 

[[item]]
itemname = "Fragments"
itemdesc = "This one can get a bit longer."

    [item.attributes]
    material = "Basematname"
    light    = "Lightname"
    transpc  = "full"
    displace = "height"

    [[item.part]]
    partname = "Shard"
    partlink = "active"

    [[item.part]]
    partname = "Tear"
    partlink = "deferred"

    [[item.part]]
    partname = "crater"
    partlink = "disabled"


# — — — — —  — — — — — — — — — — — — — — — — — — 
#                   Second Item
# — — — — —  — — — — — — — — — — — — — — — — — — 

[[item]]
itemname = "Splash"
itemdesc = "This one also can get a bit longer."

    [item.attributes]
    material = "Other Basematname"
    light    = "Other Lightname"
    transpc  = "half"
    displace = "bump"

    [[item.part]]
    partname = "Drops"
    partlink = "active"

    [[item.part]]
    partname = "Wave"
    partlink = "deferred"

demo.go

package main 

import (
    "fmt"
    "github.com/BurntSushi/toml"
)

type item struct {
    ItemName    string
    ItemDesc    string
    Attributes  attributes
    Part        []part
}

type part struct {
    PartName    string
    PartLink    string
}

type attributes struct {
    Material    string
    Light       string
    TransPC     string
    Displace    string
}

type items struct {
    Item    []item
}



func main() {


    var allitems items

    if _, err := toml.DecodeFile("demo.toml", &allitems); err != nil {
        fmt.Println(err)
        return
    }

    fmt.Printf("\n")

    for _, items := range allitems.Item {
        fmt.Printf("    Item Name: %s \n", items.ItemName)
        fmt.Printf("  Description: %s \n\n", items.ItemDesc)

        fmt.Printf("     Material: %s \n", items.Attributes.Material)
        fmt.Printf("     Lightmap: %s \n", items.Attributes.Light)
        fmt.Printf(" TL Precision: %s \n", items.Attributes.TransPC)
        fmt.Printf("   DP Channel: %s \n", items.Attributes.Displace)


        fmt.Printf("    Part Name: %s \n", items.Part[0].PartName)
        fmt.Printf("    Part Link: %s \n", items.Part[0].PartLink)
        #                                             ^
        #                              That's where [:] won't do it.   

        fmt.Printf("\n────────────────────────────────────────────────────┤\n\n")


    }

    fmt.Printf("\n")


}
4

1 に答える 1