Project IDX, que se lanzó en junio de 2024, es un espacio de trabajo asistido por IA para el desarrollo de aplicaciones de pila completa en la nube. Admite una amplia gama de frameworks, lenguajes y servicios, además de integraciones con los productos de Google para agilizar los flujos de trabajo de desarrollo.
Vamos a aprovechar esto para mostrarte cómo crear aplicaciones para Go en minutos. Configuraremos un entorno de desarrollo para Go en Project IDX y crearemos tu primera aplicación de servidor. Veremos la configuración de un entorno de desarrollo para Go en IDX y la creación de un simple servidor de Hello World.
Hay diferentes formas de crear espacios de trabajo en IDX. Puedes importar un repositorio de GitHub, crear un nuevo espacio de trabajo en blanco desde cero o usar una plantilla preconfigurada. Primero, te mostraremos cómo empezar desde cero, y luego echaremos un vistazo a las plantillas.
En esta sección, te indicaremos cómo configurar un entorno y escribir un servidor Hello World básico con IDX.
Daremos los primeros pasos creando un nuevo proyecto en blanco en IDX, en idx.google.com/new/blank. Este proyecto contiene un README y un dev.nix predeterminado.
La configuración del entorno se puede personalizar con configuraciones de entorno de nix. Una configuración mínima para un espacio de trabajo para Go en IDX agregará el paquete nix para Go e instalará la extensión de Go:
Actualiza .idx/dev.nix para incluir el paquete nix para Go y la extensión de Go:
{ pkgs, ... }: {
packages = [
pkgs.go
];
idx = {
extensions = [
"golang.go"
];
};
}
Rebuild your environment to allow these changes to take effect.
Now that the workspace is set up for Go code development, we can start writing our Go server.
First, let's initialize the module that will contain our Go code. You can do this by running the > Go: Initialize go.mod
provided by the Go extension from the Command Palette, or by running go mod init
from the command line.
$ go mod init github.com/myorg/helloWorld
Let’s create a main.go
with a simple server that returns “Hello, World!"
package main
import (
"fmt"
"log"
"net/http"
"os"
)
func main() {
log.Print("starting server...")
http.HandleFunc("/", handler)
// Determine port for HTTP service.
port := os.Getenv("PORT")
if port == "" {
port = "3000"
log.Printf("defaulting to port %s", port)
}
// Start HTTP server.
log.Printf("listening on port %s", port)
if err := http.ListenAndServe(":"+port, nil); err != nil {
log.Fatal(err)
}
}
func handler(w http.ResponseWriter, r *http.Request) {
fmt.Fprint(w, "<!DOCTYPE html>\n")
fmt.Fprint(w, "Hello, World!\n")
}
Now that we have a server that can listen to requests, let’s test it out by creating a preview.
To .idx/dev.nix, add the web preview configuration:
idx = {
previews = {
enable = true;
previews = {
web = {
command = ["go" "run" "main.go"];
manager = "web";
env = {
# Environment variables to set for your server
PORT = "$PORT";
};
};
};
};
};
Rebuild the environment again to see the web preview. The preview can also be opened from the Command Palette using > Project IDX: Show Web Preview
.
To start quickly, we are providing you with ready to use templates that include a pre-configured environment with all the tools and the libraries needed.
Start with one of the Go backend server templates or start building LLM applications with the Go and Gemini template.
Gemini with Go template is integrated with Gemini API to leverage the power of AI. Plug in your Gemini API key to get going.