Go学習ログ2024/2/18
Goのdefer文について学んだ。こちらのサイトによると「defer 文で関数を呼び出すと、その関数の呼び出しは、 「defer 文を実行した関数を抜ける時に」呼び出されます。」と記されている。 これが一番わかりやすい説明な気がする。
例えば、以下のようなコードがあった際に、、、
code:main.go
package main
import "fmt"
func main() {
fmt.Println("+main()")
defer fmt.Println("Hello, defer!")
fmt.Println("-main()")
}
実行結果は以下のようになる。
code:terminal
go run main.go
+main()
-main()
Hello, defer!
その後、typeと構造体について学んだ。
構造体というのは、名前と型を持つフィールドというもの集まりのことであるらしい。structという予約語を用いて定義することができる。
code:sample.go
struct {
Name string
Age int
}
こんな感じ。値を初期化しておきたいときは、以下のように書く。
code:sample.go
var person struct {
Name string
Age int
}{
Name: "tenntenn",
Age: 30,
}
そして、フィールドへの代入などはperson.Name = "yamato"のように書く。
構造体はここらへんにしておいて、今度はtypeについて学んだ。
typeを用いると、既存の型に別名を付けることができる。必ずしも構造体に対して使われるというわけではないみたい。結構、Goの構造体の解説でtypeと一緒に説明されている記事が多かったので、後述する参考文献はためになった。
まあ、とりあえず具体例を。
type Hex int
こんな感じで、int型にHexという別名を付けることができる。
また、type MyReader io.Readerこのように書けば、別のパッケージにも別名を付けることができる。