2022年1月20日木曜日

Goのif文の書き方

今回はGoのif文の書き方です。

if文というのは条件によって分岐させる処理のことです。

言葉で説明するよりもコードを見たら一目瞭然なので、以下のコードを書いて実行しましょう。

package main

import "fmt"

func main() {
	num1 := 3
	if num1 == 1 {
		fmt.Println("num1 is 1")
	} else if num1 == 2 {
		fmt.Println("num1 is not 2")
	} else {
		fmt.Println("num1 is not 1 and 2")
	}

	num2, num3 := 3, 4
	if num2 == 3 && num3 == 4 {
		fmt.Println("num2 is 3, num3 is 4")
	}

	if num2 == 3 || num3 == 4 {
		fmt.Println("num2 is 3 or num3 is 4")
	}

}

これを見たらもう分かりますよね。

説明はいらないと思います。

num1、num2、num3の値を変えて実行したら何をしているのかがすぐに分かると思います。

&&はかつ(and)の意味で、||はまたは(or)の意味です。

複数の条件で分岐させたい時に使えます。

Goの関数の宣言と使い方

今回は、Goの関数について書きます。

関数が使えるようになるとスッキリしたコードが書けるようになります。

言葉で説明するよりも、コードを見た方が分かりやすいと思うので、以下のコードを書いて実行してみましょう。

3と5の2つを引数として渡して、その合計を表示します。

package main

import "fmt"

func add_num(x int, y int) int {
	return x + y
}

func main() {
	answer := add_num(3, 5)
	fmt.Println(answer)
}

これを実行すると3+5で8と表示されます。

まず、関数を宣言するためにfuncとし、その後ろに好きな関数名を書きます。

関数名は自由に書く事ができますが、関数名を見たらすぐにその関数が何をするものなのかというのが分かるような名前にするのが良いです。

関数名の後ろに()を書き、その中に引数を型と合わせて書きます。

さらに、その後ろに返ってくるものの型を書きます。

宣言した関数を使う時には、関数名の後ろに()を付けて、その括弧の中に引数をカンマで区切って書きます。

最初は、型を書いたりと少しややこしく感じるかもしれませんが、慣れてくるとそんなに難しくありません。

次に、変数に関数を入れるというやり方で書いてみましょう。

これも先にコードを書いて実行して下さい。

package main

import "fmt"

func main() {
	f := func(x int, y int) {
		fmt.Println(x + y)
	}
	f(3, 5)
}

これもさっきと同じで8と表示されます。

さっきと違うのは、関数名を書いて宣言するのではなく、関数をそのまま変数に代入しているところです。

最初は、このような書き方は使わないと思いますが、一応覚えておきましょう。

最後に、もっとシンプルな書き方です。

package main

import "fmt"

func main() {
	func(x int, y int) {
		fmt.Println(x + y)
	}(3, 5)
}

これを実行すれば分かると思うのですが、やはり8と表示されます。

関数を変数名に代入すらせずに、そのまま実行しているのです。

Goの関数は書き方が複数あるので、最初は難しく感じるかもしれません。

慣れるまでは、基本的な書き方で十分なので、慣れたら別の書き方も練習していきましょう。

2022年1月18日火曜日

Goの数値型と四則演算

今回は Goの数値型について説明します。

Goにはたくさんの数値型があります。

例えば、uint8、int8、float32、complex64などがあります。

ただ、最初の段階では整数型のintと浮動小数点数のfloat64だけ覚えておけば十分です。

他のものについては、実際にアプリの開発などを始めて使う必要が出てきた時に調べれば十分でしょう。

まず、最初は簡単な基本的なところだけを理解しながら最後まで進みましょう。

そして、最後まで終わったら、また最初に戻って少しずつ深めて勉強していくと効率が良いです。

では、数値型を使って四則演算をして見ましょう。

以下のコードを書いて実行してみましょう。

package main

import "fmt"

func main() {
	fmt.Println("1 + 1 =", 1+1)
	fmt.Println("10 -2 =", 10-2)
	fmt.Println("3 * 3 =", 3*3)
	fmt.Println("9 / 3 =", 9/3)
	fmt.Println("10 % 3 = ", 10%3)
	fmt.Println("15 / 6 =", 15/6)
	fmt.Println("15 / 6.0 =", 15/6.0)
}

これを実行すると、以下のように出力されます。

1 + 1 = 2
10 -2 = 8
3 * 3 = 9
9 / 3 = 3
10 % 3 =  1
15 / 6 = 2
15 / 6.0 = 2.5

別に難しくないですよね。

注意すべき点としては、最後の2つです。

単に15/6と書けば、小数点以下は切り捨てられてしまいます。

小数点まできちんと出力したければ、どちらかを浮動小数点数にする必要があります。

掛け算は*、割り算は/、余りは%ですので覚えておきましょう。

他にも++という書き方や+=という書き方などもありますが、それはもう少しGoの勉強が進んでからで大丈夫かと思います。

これでGoを使って簡単な計算をすることができるようになりましたね。

Go言語の定数const

変数の次は定数です。

変数は宣言して値を代入した後に、別の値をさらに代入して値をどんどん変えることができます。

これに対して、定数は、一度値を代入したら、その後は値を変更することができません。

Goでは定数を宣言するのにconstを使います。

例えば、以下のように書きます。

package main

import "fmt"

func main() {
	const Name = "Uber Go"
	fmt.Println(Name)
}

定数Nameの最初のNは大文字です。これはまた後ほど詳しく解説しますので、今は気にしなくても大丈夫です。

そして、この後に以下のようにしてNameに別の値を代入しようとするとエラーが出ます。

package main

import "fmt"

func main() {
	const Name = "Uber Go"
	fmt.Println(Name)
	Name = "Run"
}

これを実行すると以下のようなエラーが出てNameには別の値を代入できませんということが表示されます。

./lesson.go:8:7: cannot assign to Name (declared const)

これがGoの定数constの使い方です。

定数には、後ほど変更しない値を入れる時に使うようにしましょう。

Go言語の変数宣言と値の代入

今日も朝からウーバーイーツの稼働をしたのですが、単価が300円(通称スリコ)だったので、早々に切り上げてGoの勉強をしました。

今回はGoの変数宣言について書きます。

まず、一番基本的な変数宣言を書くと以下のようになります。

package main

func main() {
	var i int = 1
	var f64 float64 = 2.5
	var s string = "hello"
	var t bool = true
}

まず、varを書いて、続けて変数名、型を書きます。

intは整数型、float64は浮動小数点数型、stringは文字列型、boolは論理値型です。

ちなみに、このまま実行すると以下のようなエラーが出ます。

./lesson.go:4:6: i declared but not used
./lesson.go:5:6: f64 declared but not used
./lesson.go:6:6: s declared but not used
./lesson.go:7:6: t declared but not used

Compilation finished with exit code 2

これは、宣言した変数がどこにも使われていないというエラーです。

Goはけっこう厳しくて、こういう細かいところまでエラーが出るんですね。

エラーを出さないようにするために、宣言した変数を以下のようにPrintlnで使ってやります。

package main

import "fmt"

func main() {
	var i int = 1
	var f64 float64 = 2.5
	var s string = "hello"
	var t bool = true
	fmt.Println(i, f64, s, t)
}

これで、以下のようにそれぞれの変数に入っている値が出力されます。

1 2.5 hello true

Process finished with the exit code 0

これが、Goの基本的な変数宣言と値を代入する書き方です。

次に、同じ型を複数個宣言する方法です。同じ型の場合は、カンマで区切ってまとめて以下のように宣言して代入することができます。

package main

import "fmt"

func main() {
	var i, c, d int = 1, 3, 5
	fmt.Println(i, c, d)
}

次に、varを省略する方法です。複数のvarを書くのがめんどくさいので、()で括って以下のように書くことでvarを何回も書くのを省略することができます。

package main

import "fmt"

func main() {
	var (
		i, c, d int     = 1, 3, 5
		f64     float64 = 2.5
		s       string  = "hello"
		t       bool    = true
	)
	fmt.Println(i, c, d, f64, s, t)
}

実行すると先ほどと同じ結果が出力されます。

値を代入せずに、以下のように変数だけ宣言すると、デフォルトの値が自動的に代入されますので、これも一応知っておきましょう。

package main

import "fmt"

func main() {
	var (
		i   int
		f64 float64
		s   string
		t   bool
	)
	fmt.Println(i, f64, s, t)
}

これを実行すると、以下のようにデフォルトの値が出力されます。

0 0  false

Process finished with the exit code 0

最後に、varと型を省略する方法です。

以下のように、:=で値を代入することでvarと型を省略することができます。

package main

import "fmt"

func main() {
	i, c, d := 1, 3, 5
	f64 := 2.5
	s := "hello"
	t := true
	fmt.Println(i, c, d, f64, s, t)
}

これを実行すると先ほどと同じように出力されます。

ただし、この省略した書き方は、関数の外では使えないので注意して下さい。関数の外で宣言するなら、最初の基本的な書き方をする必要があります。

ということで、今回はGoの変数宣言と値の代入でした。

2022年1月17日月曜日

Go言語でHello, World!を出力してみよう

おはようございます。朝の4時に起きて、Go言語の勉強をしています。

Goの環境構築が終わったので、今日からはどんどん勉強を進めていきますよ。

まずはプログラミングの勉強をする時に定番のHello, World!を出力してみましょう。

以下のコードを書いて実行すればHello, World!と出力されます。

package main

import "fmt"

func main() {
	fmt.Println("Hello, World!")
}

パッと見たら、よく分からない部分がいくつかあると思いますが、今はあまり気にせずに行きましょう。

Goでは、main関数を作ってその中に処理を書く必要があります。

そして、printするにはfmtというパッケージをimportで読み込んで使う必要があります。

Golandを使っていれば、3行目のimport fmtは自動で挿入されるので便利ですね。

Goland以外のエディタを使っている人は自分で書かなければならなりので、忘れずに書いて下さいね。

1行目のpackage mainもGolandだと自動的に挿入されます。これは今はあまり気にせずに最初に必ず書かなければならないお決まりのものだと思っておきましょう。

一番、大切なのはfmt.Println("Hello, World!")ですね。

これがHello, World!を出力するコードです。

PrintlnのPは大文字なので注意しましょう。またPrintではなくlnを付けてPrintlnなのでこちらも注意しましょうね。

Golandならコードを書いて、緑色の三角の再生ボタンを押せば自動的にコンパイルして実行してくれます。

これで、Hello, World!が出力できました。

とにもかくにも、プログラミングの勉強はHello, World!を出力することから始まります。

これができたら大きな大きな一歩を踏み出したことになりますね。

今回はここまで。引き続き頑張っていきます。

M1 MacにGoをインストールして環境構築

 プログラミングの勉強をするためにはパソコンに色々とインストールしなければならない。

まずはGoをインストール。

Goはこちらからダウンロードできる。

https://go.dev/dl/

私はMacなのでApple MacOSを選択してダウンロード。

ダウンロードしたらダブルクリックして進めていけば簡単にインストールできる。

ターミナルを立ち上げて、goと入力してエンターを押すとこんな画面が出てくる。これが出たらGoのインストールは完了。


次に以下のコマンドで、godocをインストールします。最新版をインストールするなら最後はlatestで大丈夫です。

go install golang.org/x/tools/cmd/godoc@latest

ここは要注意です。以前は、以下のコマンドでgo getを使っていたのですが、それが非推奨になってgo installを使うようになりました。

go get golang.org/x/tools/cmd/godoc

go getではなくて、go installなので注意して下さいね。

インストールできたら、以下のコマンドで確認します。

go doc fmt

こんな画面が出てきたらインストール完了です。


ここも注意が必要です。

以前は、godoc fmtでこの画面が表示されていたのですが、今はgo doc fmtです。goの後ろにスペースが必要です。

次はエディタのインストールです。

エディタは何でも好きなのを使えばいいのですが、GoでおすすめのエディタはGolandです。

Goに特化したエディタなのでめちゃくちゃ使いやすいです。

ただ唯一の欠点は有料ということです。しかもけっこう高い。1年間で25,910円(税込)です。

使い続ければ2年目、3年目と安くなっていくのですが、それにしてもちょっと高いですね。

無料でやりたい人はVisual Studioを使うのもありだと思います。

私は、本気でGoを勉強するつもりなので有料のGolandを買いました。プログラミングをするにあたって、エディタは大切な仕事道具なので、ここは必要な投資だと思ってお金を払いました。

インストールは簡単です。こちらのGolandのサイトからダウンロドしてインストールするだけです。

起動したらこんな画面が出てきます。


ということで、これで環境構築完了です。

ここまで来たら、あとはガリガリとコードを書いて勉強するのみです。

高いエディタも買ったし、気合いが入ります。

次回からはGoの基本を勉強して、学んだことを書いてアウトプットしていきます。

みなさんも一緒にGoの勉強をしましょう!

2022年1月16日日曜日

自己紹介。華麗な転落人生からの再起を目指します!

 はじめまして。ウーバーGoのGoです。

今日からブログを始めることにしましたので、まずは自己紹介をします。

現在、40代の妻子持ちの男です。

今は、ウーバーイーツと出前館の配達員をして、何とか生きています。

20〜30代の頃は、ネットビジネスで成功して、月収300万くらいありました。

しかし、Googleのアルゴリズム変更でアクセス激減で収入もほぼゼロに。

やむを得ず、中古のPCX125を買ってウーバー配達員に。

見事な転落人生ですよね。遠慮なく笑ってやって下さい。

借金も抱えて、今はウーバーイーツの仕事で本当にギリギリの生活をしています。

でも、私は絶対に諦めませんよ。

絶対にもう一度復活して、以前よりも高くまで飛んでやろうと思っています。

今は、大きく飛ぶために低く屈んで力を貯めている状態だと自分に言い聞かせて耐えています。

ウーバーイーツや出前館の配達だけをしていたのでは先が無いので、仕事が終わった後にプログラミングの勉強をしています。

なぜ、プログラミングの勉強なのかというと、ウーバーイーツの配達員で実績を積み重ねるとランクが上がって、Udemyの講座を割引価格で受けることができるのです。

せっかくだから使えるものは使ってやろうということで、どんな講座があるのか調べているとプログラミング系の講座が多かったのです。

プログラミングができれば、絶対にいつか役に立つはずと信じて、プログラミングの勉強をすることを決意したのです。

40代で全くの未経験の男が、ウーバーイーツの配達員をしながら、プログラミングの勉強をして、どこまで行けるのかチャレンジしてやろうと思っています。

プログラミングの勉強を始めると決めたのはいいけど、プログラミングをするためにはプログラミング言語というのを選ばなければならないと知りました。

調べてみると、今流行っているのはRubytとPythonらしい。

でも、せっかくやるのなら今流行してるものではなくて、これから流行が来て、そこから長く使えるものが良い。

それでさらに調べたらGoというのを発見。

Googleが作ったプログラミング言語で、日本ではまだ流行ってないけど、アメリカのシリコンバレーでは流行しているらしい。

大手のIT企業もGoを使うことろが増えているみたいで、将来性がある言語だとのこと。

しかも、汎用性が高くて、Webアプリも作れる、iPhoneアプリも作れる、Androidも作れる、何でもだいたいできるらしい。

さらに、Goを使える人の平均年収は、たのプログラミング言語と比べて高いらしい。

なんかGoっていう名前もシンプルでかっこいいじゃない。

ということで、プログラミング言語はGoを選択しました。

これからウーバーイーツ配達員をしながらGoでプログラミングの勉強をして、何か一発当てて大復活をしてやります。

転落したウーバーイーツ配達員の40代男の大復活劇をこのブログに記録として残そうと思います。

もうお気づきだと思いますが、ウーバーGoというこのブログのタイトルは、ウーバーイーツ配達員とプログラミング言語Goを組み合わせたものです。

私と同じウーバーイーツや出前館の配達員、40代未経験からプログラミングを始める人、こういう人の希望にもなるかなと思います。

人生転落した男のブログですが、これからよろしくお願いします。

GAEのGo言語でuser APIが機能しない件

Goを使ってGAEのアプリケーションを作り始めたけど、管理画面を作る段階でいきなり行き詰まった。 user APIがあるんだけど、それがどうしても機能してくれなくて、LoginURLやLogoutURLが返ってこないんです。 検索して出てくるコードのまま書いてるんだけど、全...