LoginSignup
0
0

Go! Kobe! に参加しました

Posted at

はじめに

この記事はYamato Advent Calendar 2023 4日目の記事です。

今回は12/3(日)に神戸で開催されたGo! Kobe!に参加してきたのでまとめようと思います。

概要

 @tenntennさんが主催するGoのハンズオンイベントです。

↓ ハンズオンの資料です

ハンズオン

ハンズオンはステップアップ式にOpenAIを活用したChat Botを作成するというものでした。
普段Goをかじってはいるので、内容は比較的簡単に感じました。

が、このハンズオンを通して、学んだこともたくさんあったので、まとめたいと思います。

特に、text/templateembedパッケージは使用したことがありませんでした。
ということで、この二つのパッケージを使って何か作ってみます。

作りました。htmlのtemplateファイルをembedで読み込みホストするだけのWebサーバーです。

HTMLのテンプレートは以下のようになっています。

<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <title>Golang Template Server</title>
</head>
<body>
<h1>名前:{{.Name}}</h1>
<h2>年齢:{{.Age}}</h2>
</body>
</html><!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <title>Golang Template Server</title>
</head>
<body>
<h1>名前:{{.Name}}</h1>
<h2>年齢:{{.Age}}</h2>
</body>
</html>

{{.Name}}と{{.Age}}の部分に値を埋め込みます。

go run cmd/main.go

で実行してみます。flagパッケージを使用しているため、portの指定も可能です。

go run cmd/main.go --port 9000

デフォルトでは8080ポートで起動します。

locahost:8080にアクセスしてみると,

image.png

このように簡単なHTMLが描画されます。

また、localhost:8080/selfにクエリパラメータで「name」と「age」を渡してあげると、動的にHTMLを書き換えることができます。

試しにlocalhost:8080/self?name=hoge&age=20としてアクセスすると以下のようになります。

image.png

text/templateパッケージを使って、HTMLのテンプレートを使用することができました。

embedパッケージを使用しているため、buildしてindex.htmlを消してもうまく動きます。
これは、ビルド時に静的なファイルを読んでくれ、ビルドされたバイナリに埋め込まれるからなんですね。こんなパッケージがあるのは初めて知りました。ありがたや

感想

GoのパッケージやGoの設計思想、pkg.go.devなどたくさん深掘りをすることができたハンズオンでした。ありがとうございました!

終わりに

Goについて知らないことだらけなので、もっと精進します。

明日のYamato Advent Calendar 2023は特に決めてませんが、何か書きます。お楽しみに!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0