数値→文字列
前回は数値同士で変換しましたが、今回は文字列に変換してみます。
Go言語は「静的型付け」
今まではスクリプト言語しか話題にしてきませんでしたので「動的型付け」ばかりでしたが、Go言語は「静的型付け」です...
上で説明したPrintfに似た関数の、Sprintfを使います。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
package main import ( "fmt" ) func main() { var i int = 10 var f float64 = 3.14 //Sprintfの出力結果は文字列 si := fmt.Sprintf("%v", i) sf := fmt.Sprintf("%v", f) //文字列同士を足しているのでこうなる fmt.Println(si + sf) //103.14 } |
Printfは直接画面に出力しますが、Sprintfは文字列を返すだけで、そのままでは画面に出力しません。変数に代入して使います。
文字列→数値
文字列から数値に変換するには、strconv パッケージの関数を使います。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
package main import ( "fmt" "strconv" //複数のパッケージを使う時は追加していきます ) func main() { //文字列→int var str1 string = "10" i, _ := strconv.Atoi(str1) fmt.Println(i + 20) //30 //文字列→float64 var str2 string = "1.08" f, _ := strconv.ParseFloat(str2, 64) fmt.Println(f * 100) //108 } |
Atoi関数とParseFloat関数を使用しています。
これらは関数の戻り値が2つある形です。詳しくはまた後で書きますが、Go言語の関数は複数値を返せるということです。
i, _ := strconv.Atoi(str1) は、
strconvパッケージのAtoi関数にstr1を渡すと、int型の値とerror型の値の2つ返ってきます。
int型の値はiに代入して、error型の値は今回は使わないので_(アンダースコア)に代入しています。
_(アンダースコア)は特別な変数名です。
_(アンダースコア)に代入するのは、その値を使わない時です。
f, _ := strconv.ParseFloat(str2, 64) の_(アンダースコア)も同じです。