Missing type in composite literal

do it this way:

type Config struct {
    Element struct {    
        Name string 
        ConfigPaths []string 
    } 
}
config = Config{}
config.Element.Name = "foo"
config.Element.ConfigPaths = []string{"blah"}

This is simpler imo:

type A struct {
    B struct {
        Some string
        Len  int
    }
}

a := A{
    struct {
        Some string
        Len  int
    }{"xxx", 3},
}
fmt.Printf("%+v", a)

The assignability rules are forgiving for anonymous types which leads to another possibility where you can retain the original definition of A while allowing short composite literals of that type to be written. If you really insist on an anonymous type for the B field, I would probably write something like:

package main

import "fmt"

type (
        A struct {
                B struct {
                        Some string
                        Len  int
                }
        }

        b struct {
                Some string
                Len  int
        }
)

func main() {
        a := &A{b{"xxx", 3}}
        fmt.Printf("%#v\n", a)
}

Playground


Output

&main.A{B:struct { Some string; Len int }{Some:"xxx", Len:3}}

Tags:

Struct

Go