Для преобразования строки в структуру в Go можно использовать пакет `encoding/json` или библиотеки для парсинга текста, такие как `encoding/csv` или `encoding/xml`.
Чтобы избежать циклического парсинга при парсинге сложных строковых выражений, можно использовать более продвинутые инструменты для разбора и анализа, например, библиотеку `parcitiple`.
Для успешного разбора сравнений в древе синтаксического анализа можно изменить структуры типов следующим образом:
```go
type Rule struct {
Condition string
Comparison Comparison
}
type Comparison struct {
LeftValue Value
Operator string
RightValue Value
}
type Value struct {
Type string // тип значения, например, "string" или "number"
Data interface{} // данные значения, например, строка или число
}
type Func struct {
Name string
Args []Value
}
```
Таким образом, `Rule` содержит условие и сравнение, `Comparison` представляет собой сравнение двух значений, `Value` представляет собой значение с типом и данными, а `Func` содержит имя функции и её аргументы.
Используя такие структуры, вы сможете успешно разбирать и анализировать сложные выражения, представленные в вашем примере.