Heim >Backend-Entwicklung >Golang >Mein erstes Projekt mit Golang

Mein erstes Projekt mit Golang

王林
王林Original
2024-09-09 20:31:32952Durchsuche

My First Project using Golang

? Teil 1: Dateioperationen mit Go

? Einführung

Als Frontend-Entwickler mit jahrelanger Erfahrung in JavaScript entschied ich, dass es Zeit für eine neue Herausforderung war. Dieses Jahr habe ich mich entschieden, in die Welt von Golang einzutauchen. Um meine Fähigkeiten zu testen und mein Arsenal um ein praktisches Tool zu erweitern, habe ich File Organizer erstellt – ein Befehlszeilentool, das Ordnung in das Chaos der Dateiverwaltung bringen soll. ?

Stellen Sie sich vor, Sie haben gerade ein großes Projekt abgeschlossen und Ihr Verzeichnis ist jetzt ein chaotisches Durcheinander aus Bildern, Audiodateien, Videos und Dokumenten. Es ist ein bisschen so, als hätte man ein wunderschön eingerichtetes Haus, in dem jedoch alle Möbel willkürlich zusammengewürfelt sind. ? Ich war dort und es macht überhaupt keinen Spaß!

In diesem ersten Teil unseres Abenteuers konzentrieren wir uns auf die Grundlagen der Dateioperationen in Go und lernen, wie man Dateien basierend auf ihren Erweiterungen in übersichtlichen Ordnern sortiert und organisiert. Bereit zum Eintauchen? Auf geht's!

?️‍♂️ Die Herausforderung

Haben Sie sich schon einmal von einem überfüllten Verzeichnis überwältigt gefühlt? Sie haben ein Durcheinander aus Bilddateien, Audioclips, Videos und Dokumenten, die alle miteinander vermischt sind. Das manuelle Durchsuchen kann sich wie die Suche nach der Nadel im Heuhaufen anfühlen. ?

? Unsere heroische Lösung

Wir werden ein Tool bauen, das dieses Chaos in ein organisiertes Paradies verwandelt! Unser Datei-Organizer sortiert Dateien automatisch nach ihrem Typ in Ordner – Bilder hier, Audio dort, Videos hier und Dokumente ordentlich verstaut. ?

?️ Wie wir es geschafft haben

So haben wir dieses Wunderwerk der Dateisortierung geschaffen:

1. Verzeichnispfad abrufen

Unsere Reise beginnt damit, herauszufinden, wo sich unsere Dateien verstecken:

dir := os.Args[1]

Diese Zeile ist, als würde man unser Programm fragen: „Hey, wo ist das Verzeichnis voller unserer Dateien?“ ?

2. Lesen des Verzeichnisses

Als nächstes müssen wir einen Blick in dieses Verzeichnis werfen, um zu sehen, was sich dort befindet:

files, err := os.ReadDir(dir)
var filesToOrder []string

if err != nil {
    log.Fatal(err)
}

Wir lesen den Inhalt des Verzeichnisses und wenn etwas schief geht – zum Beispiel, dass das Verzeichnis nicht existiert – stoppt unser Programm und teilt uns dies mit. ?

3. Verzeichnisse überspringen

Jetzt müssen wir uns auf die Dateien konzentrieren und Verzeichnisse hinter uns lassen:

for _, file := range files {
    if file.IsDir() {
        continue
    }
    filesToOrder = append(filesToOrder, file.Name())
}

Hier durchlaufen wir jedes Element. Wenn es sich um ein Verzeichnis handelt, überspringen wir es. Wenn es sich um eine Datei handelt, fügen wir sie unserer Liste der zu organisierenden Dateien hinzu. ?️

4. Sortieren der Dateien

Da unsere Aktenliste fertig ist, ist es an der Zeit, sie in ihr neues Zuhause zu sortieren:

for _, fileName := range filesToOrder {
    fileType := determineType(fileName)

    switch fileType {
    case IMAGE_TYPE:
        _ = moveToFolder(filepath.Join(dir, fileName), filepath.Join(dir, "images"))
    case AUDIO_TYPE:
        _ = moveToFolder(filepath.Join(dir, fileName), filepath.Join(dir, "audio"))
    case VIDEO_TYPE:
        _ = moveToFolder(filepath.Join(dir, fileName), filepath.Join(dir, "videos"))
    case DOCUMENT_TYPE:
        _ = moveToFolder(filepath.Join(dir, fileName), filepath.Join(dir, "documents"))
    default:
        fmt.Printf("Unsupported file type: %s\n", fileName)
    }
}

Wir durchlaufen jede Datei, finden heraus, um welchen Typ es sich handelt, und senden sie an den richtigen Ordner. Wenn wir auf einen Dateityp stoßen, den wir nicht kennen, informieren wir Sie darüber. ?

5. Dateitypen bestimmen

Um herauszufinden, um welche Art von Datei es sich handelt, verwenden wir diese praktische Funktion:

func determineType(file string) int {
    for key, value := range ALLOWED_TYPES {
        for _, ext := range value {
            if strings.HasSuffix(file, ext) {
                return key
            }
        }
    }
    return UNDEFINED_TYPE
}

Es vergleicht die Dateierweiterung mit unserer Liste und teilt uns mit, ob es sich um ein Bild, eine Audiodatei, ein Video oder ein Dokument handelt. ?️‍♂️

6. Dateien in ihr neues Zuhause verschieben

Zuletzt verschieben wir jede Datei in ihren neuen Ordner:

func moveToFolder(src, dest string) error {
    if _, err := os.Stat(dest); os.IsNotExist(err) {
        err := os.Mkdir(dest, 0777)
        if err != nil {
            return err
        }
    }

    fileName := filepath.Base(src)

    err := os.Rename(src, filepath.Join(dest, fileName))

    if err != nil {
        return err
    }

    return nil
}

Wir prüfen, ob der Zielordner existiert und erstellen ihn bei Bedarf. Dann verschieben wir die Datei von ihrem alten Ort an den neuen. ?

7. Umgang mit nicht unterstützten Dateitypen

Bei Dateien, die in keine Kategorie passen, teilen wir Ihnen Folgendes mit:

default:
    fmt.Printf("Unsupported file type: %s\n", fileName)

Wir drucken eine Meldung für nicht unterstützte Dateitypen aus, damit Sie genau wissen, was nicht organisiert wurde. ?


Und damit ist Teil 1 abgeschlossen! ? Wir haben uns erfolgreich mit den Grundlagen der Dateioperationen in Go beschäftigt und unsere Dateien in übersichtliche Kategorien sortiert. Aber hier ist ein Gedanke: Was ist, wenn Sie eine neue Kategorie hinzufügen möchten, z. B. „Archive“ oder „Projekte“? Im Moment müssten Sie in die Karte eintauchen und den Code optimieren. ?

Dieser Ansatz eignet sich hervorragend, wenn Sie der Einzige sind, der das Tool verwendet. Aber stellen Sie sich vor, Sie teilen dieses tolle Tool mit Freunden, die Go vielleicht noch nicht kennen. ?️ Sie möchten es jedem leicht machen, Anpassungen vorzunehmen, ohne den Code verstehen zu müssen.

Fürchte dich nicht! Im nächsten Teil werden wir noch tiefer in das File Organizer-Tool eintauchen und erweiterte Funktionen entdecken, die diese Herausforderungen bewältigen. ? Wir sorgen dafür, dass jeder das Tool optimieren und verbessern kann, ohne eine einzige Zeile Go-Code schreiben zu müssen. Fasziniert? Bleiben Sie dran!

Haben Sie Fragen oder benötigen Sie weitere Informationen? Schreiben Sie sie unten und lassen Sie uns chatten! ?



Das obige ist der detaillierte Inhalt vonMein erstes Projekt mit Golang. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn