Go関連のことを調べてみた

Go関連のことを調べてみた

go-ruleguardのルール定義でコンパイルエラーが起きたのはなぜ?―独自Goコンパイラを探る

# TL; DR

– `go-ruleguard` のルールファイル `rules.go` は独自Goコンパイラでコンパイルされる
– そのため、専用のオブジェクト、メソッド呼び出し以外は使えない

:::note info
本記事ではruleguardの実践的な活用方法については触れていないので、予めご了承ください :bow:

(エラーが発生したときの原因調査には少しだけ役立つかもしれません)
:::

# go-ruleguardとは?
(ご存じの方は次の章まで読み飛ばしてください)

go-ruleguardはGoのlinter(およびそのCLI)です。

https://github.com/quasilyte/go-ruleguard

特徴として、**ユーザーが1からルールを作成できる**ことが挙げられます。ASTに対するパターンマッチで記述できるため、**構文レベルでルールを設定可能**です。

(以下 `v0.4.2` 時点の内容です)

“`go:rules.go
// READMEより抜粋
//go:build ruleguard
// +build rule

元記事を表示

Go言語における構造体(struct)の基本

### 構造体とは?

go構造体は、異なるデータ型の変数を一つにまとめるための複合データ型です。例えば、名前、年齢、住所を一つの「人」型としてグループ化することができます。これにより、データの管理と操作が容易になります。

### 構造体の宣言

構造体は`struct`キーワードを使用して宣言されます。以下に簡単な構造体の宣言例を示します。

> type キーワードで構造体をひとつ作るということは、struct で定義された新しい型 (type) を定義する、ということになります。

“`go
type {struct_name} struct {
filed1 type
filed2 type

}
“`

“`go
type Person struct {
Name string
Age int
Address string
}
“`

この例では、「Person」という名前の構造体を定義しています。この構造体には、Name、Age、Addressという3つのフィールドが含まれています。

### 構造体の利用

元記事を表示

Goを勉強してみた part1

# はじめに
最近Go言語を勉強し始めたので、メモとしてGo言語の特徴をメモしていく

# package
Goではソースコードの最初にpackageで名前空間を定義する必要がある
importの際にはこの名前空間でimportする

“`go
package main // <- 名前空間 import ("fmt") // <- importするパッケージ func main() { //実行したい処理... } ``` 自作モジュールを読み込みたい場合はGOROOTで指定されたPATHにあるsrcから読み込まれる GOROOTは`go env GOROOT`で確認ができる # 変数 Goでは整数型や実数型、文字列型など他の言語と同じような型を利用する 変数の定義や値の代入は以下のようにvarで定義する ```go var int32 num // 変数の定義 num = 1000 // 変数の代入 ``` また、変数の定義と代入は同時に行うことができ、その場合は以下のように記載する 定義と代入を同時に行う場合には型の定義を省略することもできる ```go var

元記事を表示

Goでテンプレート文書を使用して文書を作成する

会社名やメールアドレス等を一覧化しているExcelを読み込み、読み込んだ内容をもとにテンプレート文書に従ったメール本文を作成する、ということを行ったのでその方法をまとめます。

GoでExcelのデータを読み込む方法は先日別でまとめたので、[こちら](https://qiita.com/em1892/items/ae93a5f56b837391e775)をご参照ください。

https://qiita.com/em1892/items/ae93a5f56b837391e775

# Goでテンプレート文書を使用するには
公式パッケージである、[text/template](https://pkg.go.dev/text/template) を使用します。

# テンプレート文書の作成
まず、テンプレート文書を作成します。

今回、Excelの一覧にある宛先に、年末年始の休業期間のメールを作成するとします。
テンプレート文書は`.tmpl`の拡張子で保存します。

テンプレート文書内で、`{{.メンバ名}}`の形式で構造体のメンバーを指定することで、動的に値を挿入することが可能となります

元記事を表示

カテキョの生徒のために、英語読解問題生成サイトを作った

## はじめに
### 背景
バイトの家庭教師で、高校3年生の生徒に大学受験を指導しています。
その生徒は英語の素養がある一方、長文の読解速度・精度に課題を抱えていました。
一般に大学受験における英語は出題傾向として、西日本は精読重視、東日本は速読重視といわれていましたが、現代は共通テストとかいうので全国民が **速読** の能力が必要になりました。
**速読** の能力を底上げするにはとにかく **演習量** を通じて「問題で聞かれている箇所だけ目を通す」訓練を内面化することかと思います。

### やったこと
演習量が欲しいので、今驚きのLLMを使って無限に英語読解問題を生成するサイト[「EnglishExamForever」](https://englishexamforever.pages.dev/#/)をサーバーからフロントまで一人で開発しました。

[生徒思いの王、生徒思いキング](https://qiita.com/uts1_6/items/11e348ead4bae71571b8)ですね。

動作動画はこんな感じです。