golangでデスクトップアプリ
golangで書いてみたいんだけどなにかないかなーと探してみたけど、
なんかパッとしたものがない、、、
でも、これでもういいんじゃない?って思うことがあったので書いておく。
package main
import (
"embed"
"html/template"
"log"
"net/http"
)
//go:embed static/*
var static embed.FS
type Info struct {
Name string
Info string
}
func main() {
http.HandleFunc("/", InfoMe)
log.Fatal(http.ListenAndServe(":8080", nil))
}
func InfoMe(w http.ResponseWriter, r *http.Request) {
info := Info{"あいちゃんだよー", "競馬のAI予想してるよー"}
tmpl, err := template.ParseFS(static, "static/public/index.html")
if err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
return
}
if err := tmpl.Execute(w, info); err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
}
}
<html>
<head>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.2.0-beta1/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-0evHe/X+R7YkIZDRvuzKMRqM+OrBnVFBL6DOitfPri4tjfHxaWutUpFmBp4vmVor" crossorigin="anonymous">
</head>
<body>
<h1>{{ .Name }}</h1>
<h3>{{ .Info }}</h3>
</body>
</html>
go buildしたときにexeができる。
//go:embed static/*は、コメントだけどこれが重要。
これがあることによって、staticディレクトリ以下のファイルは、exeの中にいれてくれる。
なので、exeを起動して、localhost:8080にアクセスすると
画面が表示される。
exeだけ渡せばいいだけだし、いろいろ可能性を感じる
最後に
デスクトップアプリ?となるかもしれないけど、
ブラウザ使ってない人はいないと思うし、これでいいよね、、、?
いろいろ可能性があって、シンプルに面白そう。
0 件のコメント:
コメントを投稿