Crie aplicativos Go usando o Project IDX e a API Gemini

DEZ 18, 2024
Suzy Mueller Software Engineer
Nooras Saba Engineering Manager

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.


Primeiros passos

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.


Personalização do ambiente

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"
    ];
  };
}

Recrie seu ambiente para permitir que essas mudanças entrem em vigor.


Escreva o código do Go

Agora que o espaço de trabalho está configurado para o desenvolvimento do código do Go, podemos começar a escrever nosso servidor Go.

Primeiro, vamos inicializar o módulo que conterá nosso código do Go. Você pode fazer isso executando o > Go: Initialize go.mod fornecido pela extensão do Go na Palette Command ou executando go mod init na linha de comando.

$ go mod init github.com/myorg/helloWorld

Vamos criar um main.go com um servidor simples que retorna "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")
}

Visualização no IDX

Agora que temos um servidor que pode ouvir solicitações, vamos testá-lo criando uma visualização.

Para o .idx/dev.nix, adicione a configuração de visualização da Web:

idx = {
      previews = {
      enable = true;
      previews = {
          web = {
          command = ["go" "run" "main.go"];
          manager = "web";
          env = {
            # Environment variables to set for your server
            PORT = "$PORT";
          };
        };
      };
    };
  };

Recrie o ambiente novamente para ver a visualização da Web. A visualização também pode ser aberta na Palette Command usando > Project IDX: Show Web Preview.

Show Web Preview in Project IDX

Explore os modelos Go no IDX

Para que você possa começar rapidamente, estamos fornecendo modelos prontos para uso que incluem um ambiente pré-configurado com todas as ferramentas e bibliotecas necessárias.

Comece com um dos modelos de servidor de back-end do Go ou comece a criar aplicativos de LLM com o modelo Go and Gemini.

O modelo Gemini with Go é integrado à API Gemini para aproveitar o poder da IA. Conecte sua chave da API Gemini para começar.

Code editor displays project files and a web page titled "Baking with Gemini"  with images of baked goods and a prompt to provide a recipe in IDX