Я хочу иметь фрагмент строк, и когда определенные строки будут найдены, они будут заменены группой связанных строк.
Например, если у меня есть это:
[]string{"A","FROM_B_TO_E","F"}
После запуска моего метода я хочу иметь:
[]string{"A","B","C","D","E","F"}
Я придумал этот код, дело в том, что хотя я могу распечатать свой слайс to_be_added непосредственно перед его фактическим добавлением, он почему-то не работает. Однако это сработает, если я изменю свой translateRule, поэтому вместо того, чтобы возвращать фрагмент строки, он возвращает только одну строку:
func groupRules(validationRules []string){
for index,rulename := range validationRules {
if succeeded, to_be_added := translateRule(rulename) ; succeeded == true{
fmt.Println("Entro! ", to_be_added)
validationRules = append(append(validationRules[:index],to_be_added...), validationRules[index+1:]...)
}
}
}
func translateRule(rule string) ( bool , []string ) {
if rule == "rs_full" {
return true,[]string{"sapo","rana"}
}
return false,nil
}
append
, верните новый срез и переназначьте его исходной переменной. - person mkopriva   schedule 25.07.2018s[:]
оценивается первым, поэтому Go думает, что вы при попытке нарезать указатель используйте круглые скобки, чтобы изменить порядок оценки. Или сделайте это в два этапа play.golang.org/p/nmQPiPpwruW. - person mkopriva   schedule 25.07.2018