Я хотел бы установить значение по умолчанию, и если оно не задано в структуре, я бы хотел установить его. Это немного сбивает с толку, но, пожалуйста, взгляните на (упрощенный) код:
package main
import "log"
type Something struct {
A string
B map[string]Type
C Epyt
}
type Type struct {
A Epyt
B string
}
type Epyt struct {
A string
B string
}
func main() {
var a Something
a.A = "Test A (Something)"
// var a.B["one"] Type
a.B["one"].A.A = a.B["one"].A.A
a.B["one"].A.A = "Test A ([one]Type.Epyt)"
a.B["two"].A.A = "Test A ([two]Type.Epyt)"
a.C.A = "Test A (Epyt)"
a.C.B = "Test B (Epyt)"
for i := range a.B {
if a.B[i].A.B == "" {
a.B[i].A.B = a.C.B
}
}
log.Printf("%+v", a)
}
Я работаю с viper, чтобы демонтировать файл конфигурации, поэтому я не могу использовать указатели (или я ошибаюсь?).
Я получаю сообщение об ошибке: невозможно присвоить поле структуры *** на карте.
Я обнаружил, что это старая ошибка в go lang, все еще не исправленная.
Я прочитал Почему я получаю сообщение об ошибке "невозможно присвоить" при установке значения для структуры в качестве значения на карте? и Голанг: У меня есть карта структур. Почему я не могу напрямую изменить поле в значении структуры? , но, как я уже сказал, я не могу работать с указателями (или?), Поэтому, пожалуйста, не отмечайте это как дубликат, поскольку это не так!
Если у кого-то есть идеи, как это правильно сделать, пожалуйста, помогите!