У меня есть две структуры, одна внутри другой. Я хочу напечатать внутреннюю структуру с отступом к внешней. Например, предположим, что этот код:
package main
import "fmt"
type inner struct {
c int
d int
}
func (i inner) String() string {
out := fmt.Sprintf("c = %d\n", i.c)
out += fmt.Sprintf("d = %d", i.d)
return out
}
type outer struct {
a int
i inner
}
func (o outer) String() string {
out := fmt.Sprintf("a = %d\n", o.a)
out += fmt.Sprintf("\t%v", o.i)
return out
}
func main() {
i := inner{c: 2, d: 3}
o := outer{a: 1, i: i}
fmt.Println(o)
}
Вывод этого кода:
a = 1
c = 2
d = 3
Но я хочу:
a = 1
c = 2
d = 3
Я знаю одно возможное решение меняет каждую строку внутренней структуры, в строителе внешней структуры, чтобы начать с \t
, но я хочу более чистое решение. Есть ли лучшее решение?