# TODO

## gorm

[http://blog.ralch.com/tutorial/golang-object-relation-mapping-with-gorm/](http://blog.ralch.com/tutorial/golang-object-relation-mapping-with-gorm/)

[http://gorm.io/docs/create.html](http://gorm.io/docs/create.html)

[https://zhuanlan.zhihu.com/p/42480289](https://zhuanlan.zhihu.com/p/42480289)

[https://medium.com/@cgrant/developing-a-simple-crud-api-with-go-gin-and-gorm-df87d98e6ed1](https://medium.com/@cgrant/developing-a-simple-crud-api-with-go-gin-and-gorm-df87d98e6ed1)

## validation

[https://medium.com/@thedevsaddam/an-easy-way-to-validate-go-request-c15182fd11b1](https://medium.com/@thedevsaddam/an-easy-way-to-validate-go-request-c15182fd11b1)

## beautiful

[https://itnext.io/beautify-your-golang-project-f795b4b453aa](https://itnext.io/beautify-your-golang-project-f795b4b453aa)

[https://medium.com/@teivah/good-code-vs-bad-code-in-golang-84cb3c5da49d](https://medium.com/@teivah/good-code-vs-bad-code-in-golang-84cb3c5da49d)

## concurrency

[https://medium.com/golangid/go-102-golang-concurrency-by-go-routine-3e0eab1a8ecb](https://medium.com/golangid/go-102-golang-concurrency-by-go-routine-3e0eab1a8ecb)

## CLEAN ARCH

[https://hackernoon.com/trying-clean-architecture-on-golang-2-44d615bf8fdf](https://hackernoon.com/trying-clean-architecture-on-golang-2-44d615bf8fdf)

[https://medium.com/@hatajoe/clean-architecture-in-go-4030f11ec1b1](https://medium.com/@hatajoe/clean-architecture-in-go-4030f11ec1b1)

[https://medium.com/@eminetto/clean-architecture-using-golang-b63587aa5e3f](https://medium.com/@eminetto/clean-architecture-using-golang-b63587aa5e3f)

[https://hackernoon.com/golang-clean-archithecture-efd6d7c43047](https://hackernoon.com/golang-clean-archithecture-efd6d7c43047)

[https://blog.cleancoder.com/uncle-bob/2012/08/13/the-clean-architecture.html](https://blog.cleancoder.com/uncle-bob/2012/08/13/the-clean-architecture.html)
