【第二回Go言語学習備忘録】”Hello World!”の応用編

2月 12, 2022

どもです。ドルチェ&ガッバーナの香水よりジャケットが欲しい…さいさいです。


今回は前回の記事で学習した"Hello World!"をあえて魔改造し、"引数"と"返り値"について学習していこうと思います。
“Hello world!"を出力するには少々無駄があるコードにはなってしまいますが、あくまで今回は練習ということで…。


コードはこんな感じにしてみました。

package main

import "fmt"

func practice(h string) string {
	return fmt.Sprintf("%v World!", h)
}

func main() {
	result := practice("Hello")
	fmt.Println(result)
}

難易度がちょっぴり上がってしましました…。なれないうちはmain関数から辿っていくのがいいのかなと思っています。main関数を見てみると

func main() {
	result := practice("Hello")
	fmt.Println(result)
}

となります。処理一行目の

result := practice("Hello")

“Hello"を引数としてpractice関数を実行してください、返ってきた結果を変数"result"の値とします。
ざっくりこんな意味ですかね。

二行目の処理はこれまでの内容から想像がつきます。ただし、前回は"文字列"を出力するため()ないの値をダブルクォーテーションで囲みましたが今回は"変数の値"を出力するので必要ありません。


続いて"practice関数"を見ていきましょう。

func practice(h string) string {
//引数を変数hにstring型で渡す、結果はstring型で返す
	return fmt.Sprintf("%v World!", h)
}

今回は"practice"という名前で関数を作成していきます。関数名の後ろの()内で引数を受け取ります。
引数の後ろの部分で関数の返り値を定義します。


肝心な関数の中身ですが、前回と比べると少し複雑です。

return fmt.Sprintf("%v world!", h)
//hにはmain関数で定義された引数"Hello"が入っている。
//%vにはhの値"Hello"が入る

先ほど使用した関数は"println"でしたが、今回は"sprintf"を使用します。同じ"print"系ですが、処理が異なります。

まず、これまで使用してきた"println"と"printf"の違いですが、

fmt.Println("文字列") //"文字列"をそのまま出力する
fmt.Printf("%v",変数) //変数の値(%v)や型(%T)などを使用して出力する。

となります。"printf"の書式をしっかり覚えるようにしておきたいですね!
また"print"と"sprint"の違いですが

fmt.Printf("%v",変数) //結果を出力する
fmt.Sprintf("%v",変数) //結果を出力せず文字列として返す

このような違いがあります。今回はpractice関数内で結果を出力するわけではなくmain関数に値として返したいのでこちらを採用しました。これでmain関数に"Hello world!"という文字列が返され、変数"result"に入りました。

あとはこれを"println"で出力してやるのみです!

saisai % go run main.go
Hello World!

無事成功です!!

ひとこと


引数と返り値の仕組みをなんとなく理解することができました。本来"Hello World!"と出力するにはここまでする必要はないのですが、今後必ず必要になる知識なので是非とも抑えておきたいところです!


最後まで読んでいただきありがとうございました!


-saisai-


↓本日のオススメ教材

Golang

Posted by CY