Go 服务器在 arm64 上返回损坏的图像

标签 go arm64

我写了一个简单的 HTTP 图像服务器:

go/src/demo/demo.go:

package main

import (
  "net/http"
  "github.com/gorilla/mux"
)

func main() {
  router := mux.NewRouter()
  router.HandleFunc("/foobar", func(w http.ResponseWriter, r *http.Request) {
    http.ServeFile(w, r, "/home/foobar/test.jpg")
  })

  http.ListenAndServe(":5000", router)
}

我编译它(PWD=$HOME/go/src/demo):

GOPATH=$PWD/../../ go build -o demo

然后运行:

./demo

然后在 Chrome 中打开 URL。图像已损坏 - 每次重新加载都会产生不同的损坏,偶尔会很好。较大的图像 (~200KB) 失败的频率更高,较小的图像 (~20KB) 的失败频率较低。

其他详细信息:

go version 产生go version go1.9.5 linux/arm64

在我的 Macbook 上,这不会导致任何问题——只发生在 arm64 上(看起来 ResponseWriter 没有实现刷新)。我不知所措。有什么想法吗?

最佳答案

看起来这是 go1.9.5 版本的问题。将工具链更新到 go1.10.1,问题消失。

关于Go 服务器在 arm64 上返回损坏的图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50110651/

相关文章:

google-app-engine - 如果我有 Order 子句,Google App Engine 数据存储区不会返回任何行

go - akka 或类似的 golang 替代方案来支持分布式并发?

assembly - 在 ARM Arch64 寄存器中移动 32 位常量

Rustc/LLVM 使用 opt-level=0 为 aarch64 生成错误代码

ios - 架构设置为 64 位时图像不显示

android - 如何在禁用 NEON 的情况下在 aarch64 上编译 wxwidgets

go - 避免在 "Go run"-ng 时键入主包中的所有 go 文件

concurrency - 并发 slice 访问

go - 在包中定义共享变量 - go

ios - 为 armv7、armv7s、arm64、i386 和通用构建 ffmpeg iOS 库