株式会社ヴァンデミックシステム

Blog

<スポンサーリンク>

宿題

問1: continueとbreakの違いは?

  • continue → ループ中の今差し掛かっている処理は実行されず、次のループへ
  • break → ループ終了

問2: Go言語におけるスイッチ文ではケース式に合致したらそのケースしか実行されない。しかし他の言語ではどうなっているか?複数のケースが実行されてしまうことがある。この言語仕様の名称はなにか?

  • 名称 fallthrough(落ちるという意味)
  • bashだとGoと同じな気がします

問3: 問2における機能をGo言語で実装する方法を答えよ。

package main

import "fmt"

func main() {
    i := 1
    switch {
    case i < 5:
        fmt.Println("<5")
        fallthrough
    case i < 7:
        fmt.Println("<7")
    default:
        fmt.Println("")
    }
}
<5
<7

遅延実行

  • 関数内の最後に実行される
package main

import "fmt"

func getOsName() string {
    return "windows"
}
func main() {
    // os := "windows"
    os := getOsName()
    switch os {
    case "mac":
        fmt.Println("Mac")
    case "windows":
        fmt.Println("Windows")
        // defaultなくても大丈夫
    default:
        fmt.Println("Default")
    }
}
hello foo
world foo
hello
world

ファイルを開く処理などで使う

package main

import (
    "fmt"
    "os"
)

func main() {
    // ファイルを開く
    file, _ := os.Open("./test.go")
    // 処理終了後にファイルを閉じる必要があるのでdeferを使う
    defer file.Close()
    data := make([]byte, 100)
    file.Read(data)
    fmt.Println(string(data))
}
package main

import (
    "fmt"
    "os"
)

func main() {
    // ファイルを開く
    file, _ := 

ロギング

package main

import (
    "log"
    "os"
)

func main() {
    // でたらめなファイルを開く
    _, err := os.Open("aaaaa")
    // エラー処理
    if err != nil {
        log.Fatalln("exit", err)
    }
    log.Println("logging")
    log.Println("%T %v", "test", "test")

    // Fatalが実行されると処理が終了する
    log.Fatalf("%T %v", "test", "test")
    log.Fatalln("error")
}
2020/06/18 21:50:01 exit open aaaaa: The system cannot find the file 
specified.

ファイル書き込み

package main

import (
    "io"
    "log"
    "os"
)

// loggin関数
func LoggingSettings(logFile string) {
    // 666、読み書き追記できるように作る
    logfile, _ := os.OpenFile(logFile, os.O_RDWR|os.O_CREATE
|os.O_APPEND, 0666)
    // Stdoutで標準出力もしつつlogging
    multilogFile := io.MultiWriter(os.Stdout, logfile)
    // 時間とか、Llongfileは絶対パス表記
    log.SetFlags(log.Ldate | log.Ltime | log.Llongfile)
    log.SetOutput(multilogFile)
}

func main() {
    LoggingSettings("test.log")
    // でたらめなファイルを開く
    _, err := os.Open("aaaaa")
    // エラー処理
    if err != nil {
        log.Fatalln("exit", err)
    }
}

image.png

<スポンサーリンク>

コメントを残す

Allowed tags:  you may use these HTML tags and attributes: <a href="">, <strong>, <em>, <h1>, <h2>, <h3>
Please note:  all comments go through moderation.

*

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)