0
0

More than 3 years have passed since last update.

[The Go Programming Language Specification] Defer

Posted at

Defer

Golangのspecificationの日本語訳と、ちょっとした遊びぐらいのコードを載せていく感じで進めようと思うので、
すでにGolangでコードを書いている人にはつまらないかもしれないです

また、間違っている部分があればぜひご指摘いただけると嬉しいです🙇‍♂️

想定する読者層

Defer statements

本記事は公式のドキュメントを参考にしています
- https://golang.org/ref/spec#Defer_statements

Deferは以下のような状況になるまで関数の実行を遅延します
- 関数がreturnを返す時
- goroutinがpanicになった時

Deferの使用方法

defer function

サンプルプログラム

例えば以下のようなプログラムの場合、main関数がreturnされる直前に defer print(s) が呼び出されて出力される値が入れ替わっているように見えます。

package main

import (
    "fmt"
)

func main() {
    s := "Hello, playground"
    print(s)
    defer print(s)

    fmt.Println("before return")
}

func print(s string) {
    fmt.Println(s)
}
Hello, playground
before return
Hello, playground

[The Go Programming Language Specification] Channel についてもぜひ、ご一読ください。

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