русский

Golang. Как найти нужный String ?

26  
Феврунья завсегдатайGestern, 19:01
Феврунья
Gestern, 19:01 

Вчера открыла для себя Golang, в голове ещё завалялись знания прошлого тысячилетия по программированию.Мечтаю сделать Vokabeltrainer.

1) Как обыскать имеющиеся String и сравнить место 0 с введенным словом? Например andare[0]==wahl1

2) Вообще как лучше сделать базу данных, слов будет около сотни.

3) Как сделать программу с кнопками и окнами? Для Windows und Android.


package main

import ("fmt")

func main() {

avere = [14]string{"avere", "ho", "hai", "ha", "abbiamo", "avete", "hanno", "avrò", "avrai", "avrà", "avremo", "avrete", "avranno", "haben"}

essere = [14]string{"èssere", "sono", "sei", "è", "siamo", "siete", "sanno", "sarò", "sarai", "sarà", "saremo", "sarete", "saranno", "sein"}

andare = [14]string{"andare", "vado", "vai", "va", "andiamo", "andate", "vanno", "andrò", "andrai", "andrà", "andremo", "andrete", "andranno", "gehen oder fahren"}


var wahl1 string

var wahl2 int

fmt.Println("Wählen Sie aus: avere éssere andare")

fmt.Scanln(&wahl1)

fmt.Println("Wählen Sie aus: Presente: 1, Futuro semplice: 7")

fmt.Scanln(&wahl2) // erste Stelle, letzte Stelle= wahl2+5

}

#1 
AlexNek патриотGestern, 19:14
AlexNek
NEW Gestern, 19:14 
in Antwort Феврунья Gestern, 19:01

на форуме подобные вещи можно уже не спрашивать, а вести диалог с помощником:

✅ 1. Как сравнить andare[0] == wahl1

В Go массивы и срезы (slice) работают просто. Чтобы сравнить первый элемент массива со строкой wahl1, достаточно:

if andare[0] == wahl1 {
    fmt.Println("Вы выбрали глагол andare")
}

Но ваш код не компилируется, потому что переменные avere, essere, andare не объявлены. Нужно использовать := или var:

avere := [14]string{...}
essere := [14]string{...}
andare := [14]string{...}

Или лучше — использовать map:

verbs := map[string][14]string{
    "avere":  {...},
    "essere": {...},
    "andare": {...},
}

Тогда можно легко обращаться:

if val, ok := verbs[wahl1]; ok {
    fmt.Println("Вы выбрали:", val[0])
}

📦 2. Как лучше хранить ~100 слов

Для небольшого количества слов можно:

🔹 Вариант A: JSON-файл

Создайте файл vocab.json:

{
  "avere": ["avere", "ho", "hai", ...],
  "essere": ["essere", "sono", "sei", ...]
}

И загрузите его в Go:

import (
    "encoding/json"
    "os"
)

var verbs map[string][]string

file, _ := os.ReadFile("vocab.json")
json.Unmarshal(file, &verbs)

🔹 Вариант B: SQLite

Если хотите расширяться — используйте SQLite с библиотекой mattn/go-sqlite3. Это даст гибкость: фильтрация, сортировка, статистика.


🖱️ 3. Как сделать GUI с кнопками и окнами

🔸 Для Windows:

  • Используйте Fyne — кроссплатформенный GUI-фреймворк на Go.
  • Пример:
package main

import (
    "fyne.io/fyne/v2/app"
    "fyne.io/fyne/v2/widget"
)

func main() {
    a := app.New()
    w := a.NewWindow("Vokabeltrainer")

    entry := widget.NewEntry()
    button := widget.NewButton("Suchen", func() {
        fmt.Println("Вы ввели:", entry.Text)
    })

    w.SetContent(widget.NewVBox(entry, button))
    w.ShowAndRun()
}

🔸 Для Android:

  • Go не поддерживает Android напрямую, но можно:
    • Написать backend на Go и frontend на Kotlin/Java.
    • Или использовать gomobile (ограничено).
    • Альтернатива: сделать Web-приложение на Go + HTML/JS и открыть его в WebView на Android.

💡 Бонус: структура проекта

vokabeltrainer/
├── main.go
├── vocab.json
├── gui/         # если используете Fyne
├── db/          # если используете SQLite
└── assets/      # картинки, звуки


#2