Runtime Go

Fungsi Cloud Run Anda berjalan di lingkungan yang terdiri dari versi sistem operasi dengan paket add-on, dukungan bahasa, dan library Go Functions Framework yang mendukung dan memanggil fungsi Anda. Lingkungan ini diidentifikasi berdasarkan versi bahasa, dan dikenal sebagai ID runtime.

Persiapan fungsi

Anda dapat menyiapkan fungsi langsung dari Google Cloud konsol atau menulisnya di komputer lokal, lalu menguploadnya. Guna menyiapkan komputer lokal Anda untuk pengembangan Go, lihat Menyiapkan lingkungan pengembangan Go.

Runtime Go dan image dasar yang didukung

Runtime ID Runtime Stack Image dasar runtime Penghentian penggunaan Penghapusan
Go 1.26 go126
  • google-24 (default)
  • google-24-full
  • google-24/go126
  • google-24-full/go126
  • Go 1.25 go125
  • google-22 (default)
  • google-22-full
  • google-22/go125
  • google-22-full/go125
  • Go 1.24 go124
  • google-22 (default)
  • google-22-full
  • google-22/go124
  • google-22-full/go124
  • 02-09-2026 02-03-2027
    Go 1.23
    go123
  • google-22 (default)
  • google-22-full
  • google-22/go123
  • google-22-full/go123
  • 21-02-2026 21-08-2026
    Go 1.22 go122
  • google-22 (default)
  • google-22-full
  • google-22/go122
  • google-22-full/go122
  • 28-01-2026 28-07-2026
    Go 1.21 go121
  • google-22 (default)
  • google-22-full
  • google-22/go121
  • google-22-full/go121
  • 03-09-2025 03-03-2026
    Go 1.20 go120
  • google-22 (default)
  • google-22-full
  • google-22/go120
  • google-22-full/go120
  • 01-05-2024 01-05-2025
    Go 1.19 go119
  • google-22 (default)
  • google-22-full
  • google-22/go119
  • google-22-full/go119
  • 2024-04-30 30-01-2025
    Go 1.18 go118
  • google-22 (default)
  • google-22-full
  • google-22/go118
  • google-22-full/go120
  • 30-01-2024 30-01-2025
    Go 1.16 go116 google-18-full google-18-full/go116 30-01-2024 30-01-2025
    Go 1.13 go113 google-18-full google-18-full/go113 30-01-2024 30-01-2025
    Go 1.11 go111 Dihapus Dihapus 2020-08-05 Feb 2021

    Memilih runtime Anda

    Anda dapat memilih salah satu runtime Go yang didukung untuk fungsi Anda selama deployment.

    Anda dapat memilih versi runtime menggunakan Google Cloud konsol atau gcloud CLI. Klik tab untuk mendapatkan petunjuk cara menggunakan alat pilihan Anda:

    gcloud

    Tentukan image dasar Go untuk fungsi Anda menggunakan flag --base-image, saat men-deploy fungsi Anda. Contoh:

    gcloud run deploy FUNCTION \
        --source . \
        --function FUNCTION_ENTRYPOINT \
        --base-image go126
    

    Ganti:

    • FUNCTION dengan nama fungsi yang Anda deploy. Anda dapat menghilangkan parameter ini sepenuhnya, tetapi Anda akan diminta untuk memasukkan nama jika mengabaikannya.

    • FUNCTION_ENTRYPOINT dengan titik entri ke fungsi Anda dalam kode sumber. Ini adalah kode yang dijalankan Cloud Run saat fungsi Anda berjalan. Nilai flag ini harus berupa nama fungsi atau nama class yang sepenuhnya memenuhi syarat yang ada dalam kode sumber Anda.

    Untuk mengetahui petunjuk mendetail tentang cara men-deploy fungsi menggunakan gcloud CLI, lihat Men-deploy fungsi di Cloud Run.

    Konsol

    Anda dapat memilih versi runtime saat membuat atau memperbarui fungsi Cloud Run di Google Cloud konsol. Untuk mengetahui petunjuk mendetail tentang cara men-deploy fungsi, lihat Men-deploy fungsi di Cloud Run.

    Untuk memilih runtime di Google Cloud konsol saat membuat fungsi, ikuti langkah-langkah berikut:

    1. Di Google Cloud konsol, buka halaman Cloud Run:

      Buka Cloud Run

    2. Klik Write a function.

    3. Dalam daftar Runtime, pilih versi runtime Go.

    4. Klik Create, lalu tunggu Cloud Run membuat layanan menggunakan revisi placeholder.

    5. Konsol akan mengalihkan Anda ke tab Source tempat Anda dapat melihat kode sumber fungsi Anda. Klik Save and redeploy.

    Untuk mengetahui petunjuk mendetail tentang cara memperbarui versi runtime setelah fungsi Anda di deploy, lihat Men-deploy ulang kode sumber baru.

    Struktur kode sumber

    Agar Cloud Run Functions dapat menemukan definisi fungsi Anda, kode sumber harus mengikuti struktur tertentu. Lihat Menulis fungsi Cloud Run untuk mengetahui informasi selengkapnya.

    Menentukan dependensi

    Fungsi Cloud Run di Go harus menyediakan semua dependensinya dengan modul Go dan file go.mod, atau dengan direktori vendor. Untuk mengetahui informasi selengkapnya, lihat Menentukan dependensi di Go.

    Variabel lingkungan

    Runtime Go akan otomatis menetapkan variabel lingkungan tertentu untuk digunakan fungsi Anda sesuai kebutuhan. Untuk mengetahui detailnya, lihat Mengonfigurasi variabel lingkungan.

    Jenis Context

    Paket context Go menentukan Context jenis, yang memiliki batas waktu, sinyal pembatalan, dan nilai cakupan permintaan lainnya di seluruh batas API dan antar-proses.

    Kode berikut menunjukkan contoh akses konteks oleh klien Pub/Sub:

    
    // Package helloworld provides a set of Cloud Functions samples.
    package helloworld
    
    import (
    	"context"
    	"fmt"
    	"log"
    
    	"github.com/GoogleCloudPlatform/functions-framework-go/functions"
    	"github.com/cloudevents/sdk-go/v2/event"
    )
    
    func init() {
    	functions.CloudEvent("HelloPubSub", helloPubSub)
    }
    
    // MessagePublishedData contains the full Pub/Sub message
    // See the documentation for more details:
    // https://cloud.google.com/eventarc/docs/cloudevents#pubsub
    type MessagePublishedData struct {
    	Message PubSubMessage
    }
    
    // PubSubMessage is the payload of a Pub/Sub event.
    // See the documentation for more details:
    // https://cloud.google.com/pubsub/docs/reference/rest/v1/PubsubMessage
    type PubSubMessage struct {
    	Data []byte `json:"data"`
    }
    
    // helloPubSub consumes a CloudEvent message and extracts the Pub/Sub message.
    func helloPubSub(ctx context.Context, e event.Event) error {
    	var msg MessagePublishedData
    	if err := e.DataAs(&msg); err != nil {
    		return fmt.Errorf("event.DataAs: %w", err)
    	}
    
    	name := string(msg.Message.Data) // Automatically decoded from base64.
    	if name == "" {
    		name = "World"
    	}
    	log.Printf("Hello, %s!", name)
    	return nil
    }