同事满大街找U盘,需要从另一个同事那拷贝一个大文件。找不着,尝试用windows的共享文件夹,整半天也不灵。我用几分钟用Go写了一个文件服务器。直接把编译后的二进制文件发给同事。在文件所在目录运行它,其他人就可以通过浏览器直接访问下载了。
package main
import (
"context"
"log"
"net/http"
"os"
"os/signal"
)
func init() {
log.Default().SetOutput(os.Stdout)
log.Default().SetFlags(log.Ldate | log.Ltime | log.Lshortfile)
}
func main() {
pwd, err := os.Getwd()
if err != nil {
log.Fatalf("err: %s\n", err.Error())
}
server := http.Server{
Addr: ":1024",
Handler: http.FileServer(http.Dir(pwd)),
}
go func() {
if err := server.ListenAndServe(); err != nil {
log.Fatalf("err: %s\n", err.Error())
}
}()
ctx, cancel := signal.NotifyContext(context.Background(), os.Kill, os.Interrupt)
defer cancel()
select {
case <-ctx.Done():
log.Println("Exit")
return
}
}
Go是真舒服,几行代码就可以构建一个生产级别的HTTP服务。而且还可以直接编译成本地可执行文件。