Size: a a a

2020 August 12

RA

Ruslan Askme in Go-go!
Daniel Podolsky
Вы где-то устроили бесконечную рекурсию
func (a *CustomInt) UnmarshalJSON(data []byte) error {
 var err error
 if data[0] == 34 {
   err = json.Unmarshal(data[1:len(data)-1], &a)
 } else {
   err = json.Unmarshal(data, &a)
 }

 if err != nil {
   return errors.New("Age: UnmarshalJSON: " + err.Error())
 }

 return nil
}

Вот реализация. Я так понимаю проблема в том, что пытаюсь передать ссылку на int - &a, в Unmarshal ?!  Других идей нет )
источник

DP

Daniel Podolsky in Go-go!
а вот и она, рекурсия: err = json.Unmarshal(data[1:len(data)-1], &a)

анмаршальте во временную переменную типа int, потом присваивайте
источник

RA

Ruslan Askme in Go-go!
Daniel Podolsky
а вот и она, рекурсия: err = json.Unmarshal(data[1:len(data)-1], &a)

анмаршальте во временную переменную типа int, потом присваивайте
Не понял что вы имеете в виду
источник

с

сонная википедия... in Go-go!
Ruslan Askme
Не понял что вы имеете в виду
вы передаете текущий тип по ссылке в Unmarshal
Unmarshal
видит, что тип реализует UnmarshalJSON и вызывает его
вы передаете текущий тип по ссылке в Unmarshal
источник

с

сонная википедия... in Go-go!
если вы передадите туда int, то такого не будет
источник

RA

Ruslan Askme in Go-go!
сонная википедия
если вы передадите туда int, то такого не будет
благодарю
источник

с

сонная википедия... in Go-go!
var b int  
if data[0] == 34 {
   err = json.Unmarshal(data[1:len(data)-1], &b)
} else {
   err = json.Unmarshal(data, &b)
}
*a = b
источник

с

сонная википедия... in Go-go!
если CustomInt у вас это newtype на int конечно
источник

RA

Ruslan Askme in Go-go!
сонная википедия
если CustomInt у вас это newtype на int конечно
все так
источник

RA

Ruslan Askme in Go-go!
еще раз спасибо
источник

RA

Ruslan Askme in Go-go!
А еще вопрос, ради интереса. Можно ли примитивный тип положить в кучу, а не в стек ?
источник

с

сонная википедия... in Go-go!
можно, но за вас это сделает escape analysis
источник

с

сонная википедия... in Go-go!
Ruslan Askme
А еще вопрос, ради интереса. Можно ли примитивный тип положить в кучу, а не в стек ?
а зачем вам
источник

RA

Ruslan Askme in Go-go!
любопытно, не более
источник

DP

Daniel Podolsky in Go-go!
Ruslan Askme
Не понял что вы имеете в виду
источник

RA

Ruslan Askme in Go-go!
спасибо
источник

AZ

Aleksandr Zelenin in Go-go!
И вместо = 34 поставьте = '"'
источник

AZ

Aleksandr Zelenin in Go-go!
Наглядно, нет магических констант
источник

AZ

Aleksandr Zelenin in Go-go!
Или оно так не работает? Там же руна будет, не байт
источник

DP

Daniel Podolsky in Go-go!
работает, конечно
источник