今週からgoをやる
土曜:1,5,2,3,2=8.5h
- goのエラーハンドリング
panic
(非推奨):エラーハンドリングする
- 自分で例外を投げてシステムを強制終了させる
recover
で拾うことができる
range
:foreachのように配列またはスライスの要素数分繰り返す
for i, v := range nums {
fmt.Print(fmt.Sprintf("index:%d,value:%d\n", i, v))
}
- インデックス番号使いたくない時はiのところにアンダースコアを置く
for _, v := range nums {
fmt.Print(fmt.Sprinln(v))
}
- ポインタ
- アスタリスク(*)でポインタ型宣言
- アンパサンド(&)をつけることで番地を取得する
- ポインタの中身を取得したいときはアスタリスク(*)
- 例)
func main() {
var n int = 100
fmt.Println(n) // 100
var p *int = &n
fmt.Println(p) // 0xc00007c008(番地)
fmt.Println(*p) // 100
}
- 並列処理(goroutine)あたりでキツくなってきたのでとりあえず何か作ろうと思い立った。
日曜:3h,3h=6h
- GOPATHの確認方法
- echoのmiddlewareでログ出力
package main
import (
"net/http"
"app/routes"
"github.com/labstack/echo"
"github.com/labstack/echo/middleware" // 1.インポート
)
func main() {
e := echo.New()
//Middlewares
e.Use(middleware.Logger()) // 2. これだけでログ出力される
// Routes
routes.Init(e)
e.GET("/", func(c echo.Context) error {
return c.String(http.StatusOK, "Hello, World!")
})
e.Logger.Fatal(e.Start(":8080"))
}
cannot find module
が多発。go.mod
のmodule app
部分を先頭に付けないとダメだった。例えば、プロジェクト直下/routes
を読み込みたい&go.mod
がmodule app
だった場合、以下のようにimportする
"app/routes"
月曜:11h
- Unmarshalで受け取ったjsonをstructの形で格納する
- Context :Context は、APIのサーバーやクライアントを使うときに、コンテキストを提供してキャンセルや、タイムアウト、値を渡したり出来る仕組み。
- qiita.com
火曜:10h
- Golangの用途(向き・不向き)
- 高いパフォーマンスが要求される部分を抽象化してマイクロサービスに切り出す
- railsのように、
できるだけ開発工数をかけずに開発スピードを出したい
みたいな期待には応えられないかもしれない
- go + Nuxtでテレビ番組表を作る
- 個人サービスのヒント
- コンピュータサイエンス
水曜:10h
木曜:5h
金曜:1h(私用)
週次報告
勉強時間を週次報告としていたが、目標に届く週がなく破綻していたので目標宣言を変更し現実的な数値にする
- 年間目標時間(業務での設計・実装含む):3380h
- 週次目標時間:65h
- 週次実績時間:51.5h(私用で時間確保できず)
- 何を得たか:golang基礎 + nuxt.js + TypeScriptの基礎 + javascriptの基礎
- 何が必要か:golang基礎 + nuxt.js + typescriptの基礎と応用
- 来週の目標:golang + nuxt.js + typescript + firebaseにてポートフォリオ作成