TinyGo未来会实现Golang的"net"和"net/http"包吗?
TinyGo未来会实现Golang的"net"和"net/http"包吗? 在 TinyGo 的官方页面上有信息显示,net(/…) 无法编译。
实际上,整个官方页面看起来 TinyGo 已经很久没有更新了(例如,他们的“视频”标签页中的帖子来自2003年,“文章”标签页……来自2022年)。
看起来 TinyGo 的创建者对其非常忽视,甚至发布信息中显示的进展也微乎其微。
它还值得学习吗?或者也许只能用于“闪烁 LED 的项目”,仅此而已?
提前感谢!
正如我所说,新版本带来的进展微乎其微。看看版本号就知道了,ZERO.35。基本上就是修复错误,以及在少数领域增加一些小功能。必须说,开发了这么多年……
我认为他们已经失去了微控制器市场,C++和MicroPython遥遥领先。
我喜欢Go,并且想在Raspberry Pi Pico上使用它,但是——正如你所问——不,我没有测试,因为没什么(网络/…)可测的,正如你在这张截图(来自官方TinyGo网站)上看到的:

更多关于TinyGo未来会实现Golang的"net"和"net/http"包吗?的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
Abram:
看起来 TinyGo 被其创建者严重忽视了
何以见得?在我看来,它似乎正在积极开发中。上一个版本发布于 2024 年 12 月,带来了相当多的错误修复和改进:
Release 0.35.0 · tinygo-org/tinygo
这是我们今年的最后一个版本,我们为所有 Tiny Gopher 准备了丰富的礼物! 我们很高兴地展示了改进的错误信息,以及一个新的 HTML 大小报告,以帮助确定…
你试过他们移植的 net 包吗?
GitHub - tinygo-org/net: Port of Go’s “net” package to work with TinyGo on…
将 Go 的 “net” 包移植到 TinyGo,以在嵌入式处理器上工作。
Abram:
它值得学习吗?
只有你自己能根据你的使用场景来回答这个问题。
根据TinyGo的官方文档和GitHub仓库,net和net/http包目前确实存在限制,主要原因是这些包依赖Go标准库中一些尚未在TinyGo中完全实现的系统调用和底层功能。TinyGo专注于嵌入式系统和微控制器,因此网络支持通常依赖于目标设备的硬件能力(如Wi-Fi模块)。例如,对于ESP8266/ESP32等支持网络功能的芯片,TinyGo提供了有限的网络支持,但并非所有标准库功能都可用。
以下是一个简单的示例,展示在TinyGo中如何使用ESP32进行HTTP GET请求(假设目标设备支持网络):
package main
import (
"fmt"
"machine"
"time"
"net/http"
)
func main() {
// 初始化网络连接(这里以ESP32为例,具体设置取决于目标设备)
// 注意:TinyGo中网络初始化通常需要设备特定的配置
err := connectToWiFi("SSID", "password")
if err != nil {
fmt.Println("连接失败:", err)
return
}
// 简单的HTTP GET请求示例
resp, err := http.Get("http://example.com")
if err != nil {
fmt.Println("请求失败:", err)
return
}
defer resp.Body.Close()
fmt.Println("响应状态:", resp.Status)
}
关于TinyGo的更新状态:虽然官方页面可能看起来更新不频繁,但GitHub仓库(https://github.com/tinygo-org/tinygo)仍在活跃开发中。截至2023年,社区持续提交代码和解决问题,例如对RISC-V、ARM Cortex-M等架构的支持在逐步扩展。对于网络包,进展可能较慢,因为实现需要适配多种嵌入式硬件。
如果你计划在资源受限的设备(如微控制器)上运行Go代码,TinyGo仍然是一个有价值的选择。它支持超过100种开发板,并可用于物联网项目、传感器数据采集等场景,而不仅仅是“闪烁LED”。但如果你需要完整的标准库网络功能,可能需要考虑使用更成熟的嵌入式框架(如MicroPython或Arduino C++),或者等待TinyGo的进一步更新。
总之,TinyGo适用于特定嵌入式场景,但网络功能目前有限。建议查看GitHub仓库的Issues和PR来获取最新进展。

