字节笔记本

2026年2月22日

Go Playground - Go 语言官方在线编程环境

Go Playground 是 Go 语言官方提供的在线编程环境,运行在 go.dev 的服务器上。该服务接收 Go 程序代码,进行 vet 检查、编译、链接,然后在沙箱环境中运行程序并返回输出结果。

核心功能

Go Playground 提供了简洁而强大的在线编程体验:

  • 代码运行:直接在浏览器中编写和执行 Go 代码
  • 代码格式化:自动格式化 Go 代码,保持代码风格统一
  • 代码分享:生成唯一链接,方便与他人分享代码片段
  • 多版本支持:支持 Go 1.26、Go 1.25 和 Go dev 分支

测试支持

如果程序包含测试或示例代码且没有 main 函数,服务会自动运行测试。不过由于沙箱环境的资源限制,基准测试(Benchmark)可能无法正常运行。

内置示例模板

Go Playground 提供了丰富的示例代码模板,帮助开发者快速上手:

  • Hello, World! - 入门示例
  • Conway's Game of Life - 康威生命游戏
  • Fibonacci Closure - 斐波那契闭包
  • Peano Integers - 皮亚诺整数
  • Concurrent pi - 并发计算圆周率
  • Concurrent Prime Sieve - 并发素数筛
  • Peg Solitaire Solver - peg 纸牌游戏求解器
  • Tree Comparison - 树结构比较
  • HTTP Server - HTTP 服务器示例
  • Display Image - 图片显示
  • Multiple Files - 多文件项目
  • Sleep - 休眠示例
  • Test Function - 测试函数
  • Generic index - 泛型示例

使用限制

由于安全性和资源管理的考虑,Go Playground 有以下限制:

标准库访问

可以使用大部分 Go 标准库,但有一些例外情况。

外部通信限制

唯一的通信方式是写入标准输出(stdout)和标准错误(stderr),无法访问网络或文件系统。

时间基准

程序中的时间从 2009-11-10 23:00:00 UTC 开始,这个日期具有特殊意义——它是 Go 语言首次公开发布的时间。

资源限制

执行时间、CPU 和内存使用都有严格的限制,确保服务稳定性。

确定性输出

时间基准的固定设计使得程序输出具有确定性,便于缓存程序结果。

实现原理

关于 Go Playground 的详细实现原理,可以参考官方博客文章《Inside the Go Playground》。该服务的源代码也已开源,可在 go.googlesource.com/playground 获取。

第三方使用条款

如需在自己的网站使用 Go Playground 服务,需要遵守以下规定:

  1. 事先联系 golang-dev@googlegroups.com 获得许可
  2. 使用独特的 User-Agent 以便识别请求来源
  3. 服务必须有益于 Go 社区

内容移除

如需请求移除 playground 中的内容,请联系 security@golang.org,需提供具体 URL 和移除原因。

访问地址

立即体验 Go Playground:https://go.dev/play/

分享: