Closed2

Goのfmt.Sprintfとfmt.Fprintfの違いをまとめる

ハガユウキハガユウキ

[到達していたい状態]

  • fmt.Sprintfとfmt.Fprintfの違いを説明できる
  • それらを持ちいたコードを書ける

[やること]

  • fmt.Sprintfとfmt.Fprintfについて調べる
ハガユウキハガユウキ

prefixがSのPrint関数

prefixがSのPrint関数は、出力ではなくフォーマットした結果を文字列として返す。別の変数にフォーマットした文字列の結果を代入する際に利用します。

package main

import (
	"fmt"
)
func main() {
    w := "world"
    hello := fmt.Sprintf("hello %s", w)
    fmt.Println(hello)
}

prefixがFのPrint関数

prefixがFのPrint関数は、書き込み先を明示的に指定できます。
以下の例では書き込み先にファイルを指定しています。Fprintfの第一引数はio.Writerインターフェース型の値。fは*os.File型の値。*os.File型はWrite関数を実装している。そのため、インターフェースを実装している。

package main

import (
	"fmt"
	"os"
)
func main() {
    f, err := os.Create("foo.txt")
    if err != nil {
        fmt.Println(err)
        return
    }
    // このように書いてもファイルに書き込める 
    // data := "Hello World"
    // f.Write([]byte(data))
    fmt.Fprintf(f, "Hello world")
}
type Writer interface {
	Write(p []byte) (n int, err error)
}

参考記事

https://pkg.go.dev/fmt#Fprintf
https://ja.wikipedia.org/wiki/終了ステータス
https://wa3.i-3-i.info/word1598.html
https://masanyon.com/prefix-suffix/
https://qiita.com/taji-taji/items/77845ef744da7c88a6fe#接頭辞-f

このスクラップは2023/06/10にクローズされました