夏休み3、4日目で学んだこと(UdemyのGo講座)
おはようございます。
がじぇったー (@hackmylife7) | Twitter
です。
三日目と四日目に学んだことです。
現役シリコンバレーエンジニアが教えるGo入門 + 応用でビットコインのシストレFintechアプリの開発
をやっていきます。
以下の章をやりました。
ここは写経というよりは実際にアプリケーションを作る時に見直さないと身につかないと思ったので、ささっとこんな機能があるんだな〜という程度で確認しました。
- Structオリエンテッド
- Goroutine
- パッケージ
- 便利な標準パッケージ
- ネットワーク関連でよく使われるライブラリ
構造体について
そもそもC言語をやってこなかった自分は構造体という概念の理解がいまいちでしたが、
いくつかのデータをまとめたもの=pythonのクラスのようなものと理解しました。
まず型を作ってからそこにデータをあてはめるもの、と考えるとわかりやすいです。
この構造体の概念の理解も以下のYoutubeがわかりやすかったです。
【C言語 プログラミングII】演習5-1, 5-2:構造体の基本 - YouTube
goroutine
いわゆる並列化処理。
Pythonでもマルチスレッドを使うようなガチアプリケーションは組んだことがないので、さらっと学習。必要になったらまた学ぼう。
package main import ( "fmt" "time" ) func goroutine(s string) { for i := 0; i < 5; i++ { time.Sleep(100 * time.Millisecond) fmt.Println(s) } } func normal(s string) { for i := 0; i < 5; i++ { time.Sleep(100 * time.Millisecond) fmt.Println(s) } } // 並列処理 func main() { go goroutine("hello") normal("hello") }
package
一つのアプリケーションを複数のファイルに分割する方法
対象のモジュールをimportする
main.go
├── main.go ├── mylib │ └── math.go
main.go
package main import ( "fmt" "go_study/mylib" ) func main() { s := []int{1, 2, 3, 4, 5} fmt.Println(mylib.Average(s)) }
math.go
package mylib func Average(s []int) int { total := 0 for _, i := range s { total += i } return int(total / len(s)) }