Я передаю данные в функцию с интерфейсом типа ввода.
Этот код:
main(){
SampleData := Input{
Recipients: []string{"abc","efg"},
Msg: string("Test message"),
}
InsertInSendTBL(SampleData)
}
type Input struct {
Recipients []string
Msg string
sender string
}
type Output struct {
Recipients []string
Msg string
reciver string
}
func InsertInSendTBL(Data interface{}) {
DataInput := reflect.ValueOf(Data)
NewVal := Output{
Recipients: DataInput.FieldByName("Recipients").([]string{}),//LINE ERORE
Msg: DataInput.FieldByName("Msg").String(),
sender: "1000",
}
}
Одним из моих полей структуры является фрагмент строки.Я искал в отражающей упаковке, но ничего не нашел, поэтому я использую ". ([] String {})".Результатом является эта ошибка:
утверждение недопустимого типа: DataInput.FieldByName («Получатели»). (Составной литерал) (неинтерфейсный тип отражает. Значение слева)
поэтому я пробую интерфейс в отражении Но другая ошибка
не может использовать DataInput.FieldByName ("Recipients"). Interface () (тип interface {}) как строка типа [] в значении поля: нужен типутверждение