Heim Backend-Entwicklung Golang Verwendung von Google Cloud Storage in Go: Eine vollständige Anleitung

Verwendung von Google Cloud Storage in Go: Eine vollständige Anleitung

Jun 17, 2023 am 11:27 AM
go语言 google cloud storage 指南。

Verwendung von Google Cloud Storage in Go: Eine vollständige Anleitung

Google Cloud Storage ist eine Objektspeicherlösung in der Google Cloud Platform zum Speichern und Zugreifen auf Daten. Es bietet schnelle, skalierbare und sichere Speicherdienste, die sich einfach in eine Vielzahl von Anwendungen integrieren lassen. In diesem Artikel erfahren Sie, wie Sie Google Cloud Storage in der Go-Sprache zum Umgang mit Objekten und Dateien verwenden.

Vorbereitung

Bevor Sie beginnen, müssen Sie das Google Cloud SDK und das Go-Gebietsschema installieren. Sie müssen außerdem ein Projekt auf der Google Cloud Platform erstellen und die Google Cloud Storage API aktivieren. Dies kann durch Zugriff auf die Google Cloud Console erfolgen. Anschließend müssen Sie den folgenden Befehl ausführen, um das Standard-Google Cloud-Projekt einzurichten:

gcloud config set project [PROJECT_ID]
Nach dem Login kopieren

Als Nächstes müssen Sie vor der Verwendung von Google Cloud Storage in der Go-Sprache auch die Google Cloud Storage Go-Clientbibliothek installieren. Dies kann durch Eingabe des folgenden Befehls im Terminal erfolgen:

go get -u cloud.google.com/go/storage
Nach dem Login kopieren

Bucket erstellen

In Google Cloud Storage gehostete Objekte müssen in einem Bucket gespeichert werden. Bucket ist ein von Google Cloud Storage verwalteter Namespace zum Speichern von Objekten (ähnlich wie Ordnern). Um einen Bucket in Go zu erstellen, können Sie den folgenden Code verwenden:

package main

import (
    "context"
    "fmt"
    "log"

    "cloud.google.com/go/storage"
)

func main() {
    ctx := context.Background()
    client, err := storage.NewClient(ctx)
    if err != nil {
        log.Fatal(err)
    }

    bucketName := "my-bucket"
    if err := client.Bucket(bucketName).Create(ctx, "my-project", nil); err != nil {
        log.Fatal(err)
    }
    fmt.Printf("Bucket %v created.
", bucketName)
}
Nach dem Login kopieren

In diesem Beispiel haben wir einen neuen Client mithilfe von Kontext und der Google Cloud Storage Go-Clientbibliothek erstellt. Dann geben wir den Bucket-Namen an und erstellen ihn. Die Google Cloud Storage Go-Clientbibliothek übernimmt für uns die gesamte erforderliche Authentifizierung, die über das Google Cloud SDK oder Umgebungsvariablen konfiguriert wird. Schließlich gibt dieser Code den Namen des Buckets aus, um den Erfolg anzuzeigen.

Objekte im Bucket speichern

Sobald Sie einen Bucket erstellt haben, können Sie Objekte darin speichern. In der Go-Sprache können Objekte mit dem folgenden Code in einem Bucket gespeichert werden:

package main

import (
    "context"
    "fmt"
    "io/ioutil"
    "log"

    "cloud.google.com/go/storage"
)

func main() {
    ctx := context.Background()
    client, err := storage.NewClient(ctx)
    if err != nil {
        log.Fatal(err)
    }

    bucketName := "my-bucket"
    objectName := "test-object"
    content := []byte("hello world")

    writer := client.Bucket(bucketName).Object(objectName).NewWriter(ctx)
    if _, err := writer.Write(content); err != nil {
        log.Fatal(err)
    }
    if err := writer.Close(); err != nil {
        log.Fatal(err)
    }

    fmt.Printf("Object %v created in bucket %v.
", objectName, bucketName)
}
Nach dem Login kopieren

In diesem Code erstellen wir einen Bucket und speichern darin ein Objekt mit dem Namen „test-object“. Wir haben den in google.golang.org/api/option bereitgestellten Umgebungsvariablen-Helfer verwendet, um automatisch das von Google Cloud verwaltete Token abzurufen und den Bucket-Namen, den Objektnamen bzw. den Objektinhalt festzulegen. Verwenden Sie die Funktion NewWriter, um einen neuen Objektwriter zu erstellen. Wir stellen dem Objektschreiber Inhalte zur Verfügung und sorgen dann dafür, dass das Objekt auch freigegeben wird, wenn es geschlossen wird. Abschließend geben wir eine Meldung an die Konsole aus, dass das Objekt erfolgreich erstellt wurde. NewWriter函数创建一个新的对象写入器。我们向对象写入器提供内容,然后确保对象关闭后也释放。最后,我们将成功创建对象的消息输出到控制台。

检索对象

检索Bucket中的对象与存储对象相同。使用以下代码从Bucket中检索对象:

package main

import (
    "context"
    "fmt"
    "io/ioutil"
    "log"

    "cloud.google.com/go/storage"
)

func main() {
    ctx := context.Background()
    client, err := storage.NewClient(ctx)
    if err != nil {
        log.Fatal(err)
    }

    bucketName := "my-bucket"
    objectName := "test-object"

    reader, err := client.Bucket(bucketName).Object(objectName).NewReader(ctx)
    if err != nil {
        log.Fatal(err)
    }
    defer reader.Close()

    content, err := ioutil.ReadAll(reader)
    if err != nil {
        log.Fatal(err)
    }

    fmt.Printf("Object %v in bucket %v contains: %v", objectName, bucketName, string(content))
}
Nach dem Login kopieren

在此代码中,我们使用NewReader函数创建一个新的对象读取器,读取完后使用defer机制释放,然后读取对象内容并将其输出到控制台。

删除对象和Bucket

最后,您还可以使用以下代码删除Bucket中的对象和Bucket本身:

package main

import (
    "context"
    "fmt"
    "log"

    "cloud.google.com/go/storage"
)

func main() {
    ctx := context.Background()
    client, err := storage.NewClient(ctx)
    if err != nil {
        log.Fatal(err)
    }

    bucketName := "my-bucket"
    objectName := "test-object"

    if err := client.Bucket(bucketName).Object(objectName).Delete(ctx); err != nil {
        log.Fatal(err)
    }
    fmt.Printf("Object %v deleted from bucket %v.
", objectName, bucketName)

    if err := client.Bucket(bucketName).Delete(ctx); err != nil {
        log.Fatal(err)
    }
    fmt.Printf("Bucket %v deleted.
", bucketName)
}
Nach dem Login kopieren

在此代码中,使用Delete

Objekte abrufen

Das Abrufen von Objekten in einem Bucket ist dasselbe wie das Speichern von Objekten. Verwenden Sie den folgenden Code, um Objekte aus dem Bucket abzurufen:

rrreee

In diesem Code verwenden wir die Funktion NewReader, um einen neuen Objektleser zu erstellen, und verwenden nach dem Lesen defer Der Mechanismus wird freigegeben, liest dann den Objektinhalt und gibt ihn an die Konsole aus. 🎜🎜Objekte und Bucket löschen🎜🎜Schließlich können Sie mit dem folgenden Code auch Objekte in Bucket und Bucket selbst löschen: 🎜rrreee🎜In diesem Code verwenden Sie die Funktion Löschen, um Objekte und Bucket in Bucket zu löschen selbst. 🎜🎜Fazit🎜🎜Das Obige ist die vollständige Anleitung zur Verwendung von Google Cloud Storage in der Go-Sprache. Mit der Google Cloud Storage Go-Clientbibliothek können wir ganz einfach Buckets erstellen, Objekte speichern und abrufen sowie Buckets und Objekte verwalten. Da es sich bei Google Cloud Storage um eine skalierbare Lösung handelt, können Sie Daten nach Bedarf speichern und verwalten, ohne sich über Einschränkungen des Datenvolumens Gedanken machen zu müssen. 🎜

Das obige ist der detaillierte Inhalt vonVerwendung von Google Cloud Storage in Go: Eine vollständige Anleitung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
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

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
Will R.E.P.O. Crossplay haben?
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Welche Bibliotheken werden für die Operationen der schwimmenden Punktzahl in Go verwendet? Welche Bibliotheken werden für die Operationen der schwimmenden Punktzahl in Go verwendet? Apr 02, 2025 pm 02:06 PM

In der Bibliothek, die für den Betrieb der Schwimmpunktnummer in der GO-Sprache verwendet wird, wird die Genauigkeit sichergestellt, wie die Genauigkeit ...

Was ist das Problem mit Warteschlangen -Thread in Go's Crawler Colly? Was ist das Problem mit Warteschlangen -Thread in Go's Crawler Colly? Apr 02, 2025 pm 02:09 PM

Das Problem der Warteschlange Threading In Go Crawler Colly untersucht das Problem der Verwendung der Colly Crawler Library in Go -Sprache. Entwickler stoßen häufig auf Probleme mit Threads und Anfordern von Warteschlangen. � ...

Warum hat das Drucken von Saiten mit Println und String () -Funktionen unterschiedliche Effekte? Warum hat das Drucken von Saiten mit Println und String () -Funktionen unterschiedliche Effekte? Apr 02, 2025 pm 02:03 PM

Der Unterschied zwischen Stringdruck in GO -Sprache: Der Unterschied in der Wirkung der Verwendung von Println und String () ist in Go ...

Wie löste ich das Problem des Typs des user_id -Typs bei der Verwendung von Redis -Stream, um Nachrichtenwarteschlangen in GO -Sprache zu implementieren? Wie löste ich das Problem des Typs des user_id -Typs bei der Verwendung von Redis -Stream, um Nachrichtenwarteschlangen in GO -Sprache zu implementieren? Apr 02, 2025 pm 04:54 PM

Das Problem der Verwendung von RETISTREAM zur Implementierung von Nachrichtenwarteschlangen in der GO -Sprache besteht darin, die Go -Sprache und Redis zu verwenden ...

Was soll ich tun, wenn die benutzerdefinierten Strukturbezeichnungen in Goland nicht angezeigt werden? Was soll ich tun, wenn die benutzerdefinierten Strukturbezeichnungen in Goland nicht angezeigt werden? Apr 02, 2025 pm 05:09 PM

Was soll ich tun, wenn die benutzerdefinierten Strukturbezeichnungen in Goland nicht angezeigt werden? Bei der Verwendung von Goland für GO -Sprachentwicklung begegnen viele Entwickler benutzerdefinierte Struktur -Tags ...

Welche Bibliotheken in GO werden von großen Unternehmen entwickelt oder von bekannten Open-Source-Projekten bereitgestellt? Welche Bibliotheken in GO werden von großen Unternehmen entwickelt oder von bekannten Open-Source-Projekten bereitgestellt? Apr 02, 2025 pm 04:12 PM

Welche Bibliotheken in GO werden von großen Unternehmen oder bekannten Open-Source-Projekten entwickelt? Bei der Programmierung in Go begegnen Entwickler häufig auf einige häufige Bedürfnisse, ...

Was ist der Unterschied zwischen 'var' und 'Typ' Typenwort Definition in der GO -Sprache? Was ist der Unterschied zwischen 'var' und 'Typ' Typenwort Definition in der GO -Sprache? Apr 02, 2025 pm 12:57 PM

Zwei Möglichkeiten, Strukturen in der GO -Sprache zu definieren: Der Unterschied zwischen VAR- und Typ -Schlüsselwörtern. Bei der Definition von Strukturen sieht die Sprache oft zwei verschiedene Schreibweisen: Erstens ...

Warum gibt es bei Verwendung von SQL.Open keinen Fehler an, wenn DSN leer ist? Warum gibt es bei Verwendung von SQL.Open keinen Fehler an, wenn DSN leer ist? Apr 02, 2025 pm 12:54 PM

Warum meldet der DSN bei Verwendung von SQL.Open keinen Fehler? In Go Language, Sql.open ...

See all articles