# Golang 知識匯總
[TOC]
## 職缺必備技能
### [Eat together](https://www.104.com.tw/job/4iyuf?jobsource=job_same_B)
* 工作內容
* Restful API開發
* 資料庫規劃/設計
* 基於AWS開發自家產品所需的功能
* 協助撈取各項營運數據
* Must have:
* Familiar with Golang
* Experienced with PostgreSQL
* Experienced with networking
* Experienced with Restful API
* Nice to have:
* Basic with Amazon Web Services
* Basic with NoSQL
* Basic with Serverless/Micro Service
## 教學資源收集
* [Go Web Programming 筆記](/KYCLx3dtTZiifR5Y-eQBMw)
* [Gopl 筆記](/@unknowntpo/gopl)
### Docker
* [30 天與鯨魚先生做好朋友 系列](https://ithelp.ithome.com.tw/users/20102562/ironman/3746?page=3)
* [Docker in action](https://livebook.manning.com/book/docker-in-action-second-edition/chapter-13/1)
* [Complete Guide to Create Docker Container for Your Golang Application
](https://levelup.gitconnected.com/complete-guide-to-create-docker-container-for-your-golang-application-80f3fb59a15e)
### 環境設定
* [Go 套件管理
](https://openhome.cc/Gossip/Go/Package.html)
* :question: How to create your own package?
:::spoiler
* package location:
```shell
GOPATH / GOROOT:
└── src
└── hello
└── hello.go
```
* `hello` 與 `hello.go` 必須同檔名
* `hello.go` 內要讓別的程式使用的 function, 開頭要大寫
* :question: How to use `hello` package?
* 在 anywhere
* import `hello`
* `hello.HelloWorld()`
* :question: What does `go install` do?
1. looking for pkg hello
2. generate static library `hello.a` in `$GOPATH/src/$GOOS_$GOARCH`
3. executable file will be placed in `$GOPATH/bin`
:::
:::success
TODO:
* 練習使用 bst 對slice 做排序,並 import `gopl.io/ch4/treesort` package 來對 slice 做排序
:::
* [Stack Overflow - How to get all dependency files for a program using Golang](https://stackoverflow.com/questions/32758235/how-to-get-all-dependency-files-for-a-program-using-golang)
* `go get -d ./...`
### [How to Find Exactly Where a Homebrew Package is Installed](https://osxdaily.com/2018/07/05/where-homebrew-packages-installed-location-mac/)
* `brew --prefix [package]`
* What is symbolic link?
### [Build-web-application with golang](https://github.com/astaxie/build-web-application-with-golang/blob/master/en/preface.md)
### [Go Web 编程](https://learnku.com/docs/build-web-application-with-golang/about-this-book/3151)
### PostgreSQL setup
* [Installing Postgres via Brew
](https://gist.github.com/ibraheem4/ce5ccd3e4d7a65589ce84f2a3b7c23a3)
### [Delve Note](/qUwXmT_XS_abfSslmYmG2Q)
### Golang brew 版本切換
* [Golang 透過brew來做Golang的版本切換
](https://www.evanlin.com/go-version-control-with-brew/)
### Golang homebrew 安裝與 environment variable setup
# [Gopl 筆記](/xzpq-2CFS86aFcLoDzgCfQ)
# [Docker for beginners](https://github.com/docker/labs/blob/master/beginner/chapters/setup.md)
# [Docker 筆記](/mivKlST8ST2InlHSY4_hOw)
* [Data type in Go](/Jf1dDkpNTzCYJj45Lv-H1w)
# [Go Web Programming 筆記](/KYCLx3dtTZiifR5Y-eQBMw)
# [Weekend Project](/EDuuPY5zTT-IF6cgsIzR3A)
# [curl 筆記](/92RyctzOTyWzCc1uPCsGdA)
# [Michael golang Web 筆記](/aon9ddoVSLKCYXyctM6wMw)
# [Learn go with tests](/pR-RamXLQ1eRE3zZ7Dat4Q)
* [中文](https://learnku.com/docs/learn-go-with-tests/brief-introduction/6079)
* [原文](https://quii.gitbook.io/learn-go-with-tests/)
# [跟著煎魚學 GO](https://www.bookstack.cn/read/eddycjy-go/README.md)
* 包含進階應用
* grpc
* gin
* cache
* SQL ...
# [TCP / IP 知識](/fUz7m2tAS2SmufAIEO8MDw)
# [Concurrency Patterns in Go](https://www.oreilly.com/library/view/concurrency-in-go/9781491941294/ch04.html)
# [RegExp 筆記](/Sa2HJaWERGq3tbZO3Px8Xg)
# [google - 如何做 Code review](https://google.github.io/eng-practices/review/reviewer/standard.html)
# [CodeReviewComments](https://github.com/golang/go/wiki/CodeReviewComments#error-strings)
# Go 原始碼分析
* [惜暮 - Golang Scheduler原理解析](https://blog.csdn.net/u010853261/article/details/84790392)
* [惜暮 - golang汇编语言基础](https://louyuting.blog.csdn.net/article/details/101060546)
* [go kit todo 前後端微服務範例](https://github.com/cage1016/gokit-todo)
---
# http package
## httprouter
* [httprouter 解析](/XBn7MsYVR-SDnUvbJs1OlQ)
# [Javascript 知識匯總](/a8dMESgtTnKi0mjhBfB99A)
# [Think like a programmer](/EJDmrwTiS_CMVhhsgEDEHQ)