Таким образом, структура содержит данные, которые могут быть видоизменены. Есть ли в Golang какая-то хитрость или техника, которая может рассказать забавному c, что она должна принять новый экземпляр структуры? Другими словами, старайтесь избегать повторного использования данных, которые могли быть изменены до факта или могут быть изменены во время веселого жизненного цикла c. (Я мог бы избежать мутаций, но другие разработчики в моей команде могли не получить памятку).
Для иллюстрации:
type CMRequest struct {
Endpoint string
Method string
}
func (cmreq CMRequest) Run() (res *goreq.Response) {
/// this could mutate cmreq
}
очевидно, что Run () может изменять данные в cmreq, поэтому Мне интересно, есть ли хороший шаблон для принудительного создания данных fre sh каждый раз? Единственное, о чем я могу думать, - это сохранить структуру private и сделать что-то вроде этого:
type cmrequest struct {
Endpoint string
Method string
}
func (cmreq cmrequest) Run() (res *goreq.Response) {
/// this could mutate cmreq
}
, а затем выставить вспомогательное удовольствие c:
func MakeRequestAndUnmarshalBody(d CMRequestNoReuse) (*goreq.Response) {
// check that d has a unique memory location?
cmreq := NewCPRequest(d)
res := cmreq.Run()
return res
}
, чтобы хелпер fun c будет опубликован c, и он будет каждый раз создавать новый экземпляр структуры? есть ли другой способ go об этом? Я до сих пор не могу заставить пользователя каждый раз вводить новые данные, хотя могу проверить, является ли ячейка памяти d CMRequestNoReuse
уникальной?