使用 Project IDX 和 Gemini API 构建 Go 应用

十二月 18, 2024
Suzy Mueller Software Engineer
Nooras Saba Engineering Manager

Project IDX 于 2024 年 6 月推出,是一个用于云端全栈应用开发的 AI 辅助工作区,支持各种框架、语言和服务,以及与 Google 产品的集成以简化开发工作流。

我们将利用 Project IDX 向您展示如何在几分钟内使用 Go 构建应用。我们将在 Project IDX 中设置 Go 开发环境,并创建您的首个服务器应用。我们将介绍如何在 IDX 中设置 Go 开发环境并创建简单的 Hello World 服务器。

在 IDX 中创建工作区有几种不同的方法。您可以导入 GitHub 代码库,从头开始创建新的空白工作区,或使用预配置模板。我们将首先向您展示如何从零开始,然后我们再了解各种模板


开始构建

本部分将介绍如何使用 IDX 设置环境并编写基本的 Hello World 服务器。

首先,我们从 idx.google.com/new/blank 的 IDX 中创建一个新的空白项目。此项目包含一个自述文件和一个默认的 dev.nix


环境自定义

您可以使用 nix 环境配置对环境配置进行自定义。IDX 中 Go 工作区的最小配置将添加 Go nix 软件包并安装 Go 扩展程序:

更新 .idx/dev.nix,使其包含 Go nix 软件包和 Go 扩展程序:

{ pkgs, ... }: {
  packages = [
    pkgs.go
  ];
 
  idx = {
    extensions = [
      "golang.go"
    ];
  };
}

重新构建环境,以便这些更改生效。


编写 Go 代码

用于 Go 代码开发的工作区已经设置完成,现在,我们可以开始编写 Go 服务器了。

首先,我们要初始化包含 Go 代码的模块。您可以通过运行 >Go: Initialize go.mod(由命令面板中的 Go 扩展程序提供)或从命令行运行 go mod init 来执行此操作。

$ go mod init github.com/myorg/helloWorld

我们来用一个简单的服务器创建 main.go,使其返回“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")
}

在 IDX 中预览

现在我们已经建好可以监听要求的服务器,让我们通过创建预览来测试一下。

将 Web 预览配置添加到 .idx/dev.nix:

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

再次重新构建环境以查看 Web 预览。您也可以使用 > Project IDX: Show Web Preview,通过命令面板打开预览。

Show Web Preview in Project IDX

在 IDX 中探索 Go 模板

为了快速入门,我们将为您提供即用型模板,当中的预配置环境包含您需要的所有工具和库。

首先,请选择一个 Go 后端服务器模板,或使用 Go 和 Gemini 模板开始构建 LLM 应用程序。

Go 模板中的 Gemini 与 Gemini API 集成,可以发挥 AI 的力量。插入您的 Gemini API 密钥即可开始使用。

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