fmtパッケージだけで、なんでも簡単にstring型に変換
Goは型のある言語で、型を意識して書かないといけません。
関数を使いたい時など、引数でstring型にしていされていて、あれ?使えない...って時がよくありませんか?私はよくあります。
通常だと
package main
import (
"fmt"
"strconv"
)
func main() {
num := 10
fmt.Printf("%t\n", num)
numStr := strconv.Itoa(num)
fmt.Printf("%t", numStr)
}
結果
%!t(int=10)
%!t(string=10)
になります。
Sprintfを使うと、
package main
import (
"fmt"
)
func main() {
num := 10
fmt.Printf("%t\n", num)
numStr := fmt.Sprintf("%d", num)
fmt.Printf("%t", numStr)
}
結果
%!t(int=10)
%!t(string=10)
int型から、string型に変換されていますね。
fmtパッケージだけで済むのが嬉しいですね。
また、int型だけではなく、interfeceやdate型にも対応できるので、string型に変換する時に困った時は、大体、Sprintfで解決できます。
また、前に”,”を付けたいなど、いわゆるカンマ編集なども容易に出来るのがいいですね。
一応、date型も変換出来るか見てみましょう
package main
import (
"fmt"
"time"
)
func main() {
t := time.Now()
fmt.Printf("%t\n", t)
timeStr := fmt.Sprintf("%d", t)
fmt.Printf("%t", timeStr)
}
結果
{%!t(uint64=13454110244426743808) %!t(int64=1) %!t(*time.Location=&{ 0 0 <nil>})}
%!t(string={13454110244426743808 1 1984640})
大丈夫そうですね。
Sprintfは結構、使える関数なので、ぜひ活用してみて下さい。
私事ですが、最近、推しのエンジニアさんがいるので、勝手に紹介させて頂きます。
名前はmattnさんです。
GitHubやブログ・Twitterを結構、頻繁に更新して下さるので、とてもお世話になっております。
また、みんなのGo言語などの技術書の執筆などもしていますので、ぜひ手にしてみて下さい。
twitter・ブログURLも一緒に貼っておきます。
twitter
ブログ