Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Помогите с синтаксисом в Go

Никита Свирь Ученик (89), на голосовании 13 часов назад
Вот сам код:
 func Calc(expression string) (float64, error) { 
result := 0
num := make([]int, 0, 20)
deist := make([]string, 0, 19)
expression = strings.ReplaceAll(expression, " ", "")
for _, r := range expression {
if !strings.ContainsRune("0123456789+-*/()", r) {
return 0, errors.New("Неверно набран пример")
}
}
for i:=0; i<20, i++ {
if num[i]==0{
num[i], expression = Number(expression)
}
deist[i] = expression[0]
expression = append(str[:0], str[1:]...)
if expression[i]=="("{
expression = append(str[:0], str[1:]...)
in := ""
for _, p := range expression {
if p==")" {
break
} else {
in = in + p
}
}
num[i+1]=Calc(in)
}
}
for i:=0; i<len(deist); i++ {
if deist[i]=="/" {
if num[i+1]==0 {
err := errors.New("На ноль делить нельзя!")
return 0, err
}
deist = append(str[:i], str[i+1:]...)
num[i]=num[i] / num[i+1]
num = append(str[:i+1], str[i+2:]...)
} else if deist[i]=="*" {
deist = append(str[:i], str[i+1:]...)
num[i]=num[i] * num[i+1]
num = append(str[:i+1], str[i+2:]...)
}
for i:=0; i<len(deist); i++ {
if deist[i]=="-" {
deist = append(str[:i], str[i+1:]...)
num[i]=num[i] - num[i+1]
num = append(str[:i+1], str[i+2:]...)
} else if deist[i]=="+" {
deist = append(str[:i], str[i+1:]...)
num[i]=num[i] + num[i+1]
num = append(str[:i+1], str[i+2:]...)
}
}
result = num[0]
return result, nil
}

func Number (str string) (int, string) {
chislo := 0
chisl := 0
for i:=0; i==1 {
if str[i] == "0", "1", "2", "3", "4", "5", "6", "7", "8", "9" {
chisl = int(str[i])
chislo = chislo * 10 + chisl
str = append(str[:i], str[i+1:]...)
} else {
break
}
}
return chislo
}
Вот текст ошибок:
 ./HelloWorld.go:20:20: syntax error: unexpected ++, expecting := or = or comma 
./HelloWorld.go:21:5: syntax error: unexpected if, expecting semicolon or newline
./HelloWorld.go:39:3: syntax error: non-declaration statement outside function body
./HelloWorld.go:71:20: syntax error: unexpected {, expecting semicolon or newline
./HelloWorld.go:72:7: syntax error: unexpected if, expecting expression
./HelloWorld.go:76:9: syntax error: unexpected else at end of statement
./HelloWorld.go:79:3: syntax error: non-declaration statement outside function body
Сам код желательно менять по минимуму. Заранее спасибо
Голосование за лучший ответ
Андрей Высший разум (461283) 1 месяц назад
for i:=0; i<20, i++ { - опять запятая вместо точки с запятой.

for i:=0; i<len(deist); i++ { - вероятно, потерял закрывающую фигурную скобку

for i:=0; i==1 { - отсутствует вторая точка с запятой, к тому же этот цикл ни разу не выполнится.

str[i] == "0", "1", "2", "3", "4", "5", "6", "7", "8", "9" - полностью ошибочная конструкция. Если ты хочешь проверить, что символ является цифрой, это делается так:
 str[i] >= '0' && str[i] <= '9' 

У тебя во множестве мест перепутаны одиночные и двойные кавычки. Конструкция deist[i]=="-" пытается сравнить символ deist[i] со строкой "-", что вызывает ошибку компиляции. И таких ошибок в коде не меньше пяти. Символ - одиночные кавычки: deist[i]=='-'. А двойные кавычки - строка и только строка.
Похожие вопросы