Сравнение Строк Golang

Напишите программу, которая проверяет правильность расчета на "раз два три".

Пользователь вводит последовательно 3 строки.

если эти строки "раз", "два", "три" - вывести "ОК" (кириллица) если вместо строки "раз" введена "один" - вывести "ОК" (кириллица) если вместо всех слов введены соответствующие числа "1", "2", "3" - вывести "ОК" (кириллица) "НЕ ПРАВИЛЬНО" - во всех остальных случаях

package main

import (

    "fmt"
    "os"
)

func main() {
    var A string
    fmt.Fscan(os.Stdin, &A)
    if &A == "раз, два, три " {
        fmt.Println("ОК")
    } else if &A == "один, два, три" {
        fmt.Println("ОК")
    } else if &A == "1 2 3" {
        fmt.Println("ОК")
    } else {
        fmt.Println("НЕ ПРАВИЛЬНО")
    }
}
}

Не пойму как сравнить строки


Ответы (3 шт):

Автор решения: Ainar-G

Как-то так. Условие в correct можно написать в одно выражение, но мне так кажется понятнее:

func correct(lines []string) (ok bool) {
    if len(lines) != 3 {
        return false
    } else if (lines[0] == "один" || lines[0] == "раз") && (lines[1] == "два") && (lines[2] == "три") {
        return true
    } else if (lines[0] == "1") && (lines[1] == "2") && (lines[2] == "3") {
        return true
    } else {
        return false
    }
}

func main() {
    var err error

    var lines = make([]string, 0, 3)
    var s = bufio.NewScanner(os.Stdin)
    for i := 0; s.Scan(); i++ {
        lines = append(lines, s.Text())
    }
    if err = s.Err(); err != nil {
        log.Fatalf("scanning error: %s\n", err)
    }

    if !correct(lines) {
        log.Fatalln("НЕ ПРАВИЛЬНО")
    }

    log.Println("ОК")
}
→ Ссылка
Автор решения: Рома Корегин

Можно попробовать так еще, используя только один пакет - fmt.

package main

import "fmt"

func main(){
    var val1, val2, val3 string
    fmt.Println("Пожалуйста, введите числа или слова ниже:")
    fmt.Scanln(&val1)
    fmt.Scanln(&val2)
    fmt.Scanln(&val3)

    if val1 == "Раз" && val2 == "Два" && val3 == "Три" {
        fmt.Println("ОК")
    } else if val1 == "Один" {
        fmt.Println("ОК")
    } else {
        fmt.Println("НЕПРАВИЛЬНО!")
    }
}
→ Ссылка
Автор решения: Alexandr Sh

У меня получилось так (вариант для новичков):

package main

import (
    "fmt"
    "strings"
)

func main() {
    var aArg, bArg, cArg string
    var chekSum int

    fmt.Scan(&aArg)

    if strings.Compare(aArg, "раз") == 0 {
        chekSum = chekSum + 1
    } else if strings.Compare(aArg, "один") == 0 {
        chekSum = chekSum + 1
    } else if strings.Compare(aArg, "1") == 0 {
        chekSum = chekSum + 1
    }

    fmt.Scan(&bArg)

    if strings.Compare(bArg, "два") == 0 {
        chekSum = chekSum + 1
    } else if strings.Compare(bArg, "2") == 0 {
        chekSum = chekSum + 1
    }

    fmt.Scan(&cArg)

    if strings.Compare(cArg, "три") == 0 {
        chekSum = chekSum + 1
    } else if strings.Compare(cArg, "3") == 0 {
        chekSum = chekSum + 1
    }

    if chekSum == 3 {
        fmt.Println("ОК")
        return
    }
    fmt.Println("НЕ ПРАВИЛЬНО")
}
→ Ссылка