O Project IDX, lançado em junho de 2024, é um espaço de trabalho assistido por IA para desenvolvimento de apps de pilha completa na nuvem. Ele dá suporte a uma ampla gama de frameworks, idiomas e serviços, além de integrações com produtos do Google para agilizar fluxos de trabalho de desenvolvimento.
Vamos aproveitar a oportunidade para mostrar a você como criar aplicativos com o Go em minutos. Configuraremos um ambiente de desenvolvimento do Go no Project IDX e criaremos seu primeiro aplicativo de servidor. Vamos percorrer a configuração de um ambiente de desenvolvimento do Go no IDX e criar um servidor "hello, world" simples.
Existem algumas maneiras diferentes de criar espaços de trabalho no IDX. Você pode importar um repositório do GitHub, criar um novo espaço de trabalho em branco do zero ou usar um modelo pré-configurado. Vamos mostrar como começar do zero primeiro e, depois, vamos dar uma olhada nos modelos.
Esta seção guiará você pela configuração do ambiente e a criação de um servidor Hello, World básico com o IDX.
Vamos começar criando um novo projeto em branco no IDX em idx.google.com/new/blank. Esse projeto contém um README e um dev.nix padrão.
A configuração do ambiente pode ser personalizada com configurações de ambiente nix. Uma configuração mínima para um espaço de trabalho do Go no IDX adicionará o pacote nix do Go e instalará a extensão do Go:
Atualize o .idx/dev.nix para incluir o pacote nix do Go e a extensão do 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.