字
字节笔记本
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 服务,需要遵守以下规定:
- 事先联系 golang-dev@googlegroups.com 获得许可
- 使用独特的 User-Agent 以便识别请求来源
- 服务必须有益于 Go 社区
内容移除
如需请求移除 playground 中的内容,请联系 security@golang.org,需提供具体 URL 和移除原因。
访问地址
立即体验 Go Playground:https://go.dev/play/
分享: