Jason Buberel | 2505555 | 2015-08-29 07:05:14 -0700 | [diff] [blame] | 1 | |
| 2 | Please keep all entries in reverse chronological order (most recent first) |
Andrew Gerrand | 5bc444d | 2014-12-10 11:35:11 +1100 | [diff] [blame] | 3 | |
Jason Buberel | 72249ea | 2015-08-29 15:12:22 -0700 | [diff] [blame] | 4 | Table of Contents |
| 5 | ================= |
| 6 | |
| 7 | * [Indexes](#article-indexes) |
| 8 | * [General](#general) |
| 9 | * [Concurrency / Channels](#concurrency--channels) |
Jason Buberel | 80d512e | 2015-09-19 11:00:21 -0700 | [diff] [blame] | 10 | * [Containers & Docker](#containers--docker) |
Jason Buberel | e6ad500 | 2015-09-25 09:10:25 -0700 | [diff] [blame] | 11 | * [Cross Platform Development](#cross-platform-development) |
Jason Buberel | ab7c2c0 | 2015-10-10 14:03:07 -0700 | [diff] [blame] | 12 | * [Error Handling](#error-handling) |
Jason Buberel | 72249ea | 2015-08-29 15:12:22 -0700 | [diff] [blame] | 13 | * [Interfaces / OOP](#interfaces--oop) |
Jason Buberel | e6ad500 | 2015-09-25 09:10:25 -0700 | [diff] [blame] | 14 | * [Mobile Applications](#mobile-applications) |
Albert Moravec | c93481e | 2018-08-29 15:45:48 +0200 | [diff] [blame] | 15 | * [Modules](#modules) |
Jason Buberel | e6ad500 | 2015-09-25 09:10:25 -0700 | [diff] [blame] | 16 | * [Performance and Profiling](#performance-and-profiling) |
| 17 | * [Pointers/References/Memory](#pointers-references-and-memory-management) |
Jason Buberel | c51292c | 2015-10-03 08:17:33 -0700 | [diff] [blame] | 18 | * [Reflection](#reflection) |
Jason Buberel | fe41412 | 2015-09-19 15:32:36 -0700 | [diff] [blame] | 19 | * [Security](#security) |
Jason Buberel | 9f52dca | 2015-11-29 08:10:11 -0800 | [diff] [blame] | 20 | * [Testing](#testing) |
Jason Buberel | e6ad500 | 2015-09-25 09:10:25 -0700 | [diff] [blame] | 21 | * [Web & API Development](#web--api-development) |
Jason Buberel | 72249ea | 2015-08-29 15:12:22 -0700 | [diff] [blame] | 22 | * [Misc](#misc) |
| 23 | * [Chinese](#chinese) |
| 24 | * [Czech](#czech) |
| 25 | * [German](#german) |
| 26 | * [Japanese](#japanese) |
| 27 | * [Korean](#korean) |
| 28 | |
| 29 | ## Article Indexes |
Jason Buberel | c154913 | 2015-08-29 07:10:32 -0700 | [diff] [blame] | 30 | |
Satish Talim | 19afbe5 | 2015-08-30 05:35:50 +0530 | [diff] [blame] | 31 | * [Collection of #golang posts on Medium](https://medium.com/tag/golang) _latest_ |
Jason Buberel | c154913 | 2015-08-29 07:10:32 -0700 | [diff] [blame] | 32 | * [Go articles from Dr. Dobbs](http://www.drdobbs.com/sitesearch?sort=publishDate+desc&queryText=golang&type=site) _latest_ |
Jason Buberel | 22f71b6 | 2015-08-29 15:10:51 -0700 | [diff] [blame] | 33 | * [Slideshare Collection of #golang presentations](http://www.slideshare.net/search/slideshow?searchfrom=header&q=golang&ud=any&ft=all&lang=**&sort=) _latest_ |
Jason Buberel | 513e1d6 | 2015-08-29 14:24:35 -0700 | [diff] [blame] | 34 | * [Short Go tutorials on SocketLoop](https://www.socketloop.com/tagsearch/golang) _latest_ |
Elliot Forbes | 331454a | 2018-08-22 09:10:35 +0100 | [diff] [blame] | 35 | * [An Introduction to Go](https://tutorialedge.net/course/golang/) _latest_ |
Jason Buberel | c154913 | 2015-08-29 07:10:32 -0700 | [diff] [blame] | 36 | |
Andrew Gerrand | 5bc444d | 2014-12-10 11:35:11 +1100 | [diff] [blame] | 37 | ## General |
Inanc Gumus | f3c98b9 | 2017-12-03 22:23:53 +0300 | [diff] [blame] | 38 | * [Go Defer Simplified with Practical Visuals](https://blog.learngoprogramming.com/golang-defer-simplified-77d3b2b817ff) _2017-11-23_ |
Inanc Gumus | 42b1be5 | 2017-11-12 00:17:33 +0200 | [diff] [blame] | 39 | * [The Zoo of Go Funcs](https://blog.learngoprogramming.com/go-functions-overview-anonymous-closures-higher-order-deferred-concurrent-6799008dde7b) _2017-11-09_ |
Inanc Gumus | 11c87e1 | 2017-11-12 00:16:45 +0200 | [diff] [blame] | 40 | * [Ultimate Guide to Go Variadic Functions](https://blog.learngoprogramming.com/golang-variadic-funcs-how-to-patterns-369408f19085) _2017-11-02_ |
| 41 | * [Go Funcs-Baby Gopher's Visual Guide](https://blog.learngoprogramming.com/golang-funcs-params-named-result-values-types-pass-by-value-67f4374d9c0a) _2017-10-27_ |
| 42 | * [Ultimate Visual Guide to Go Enums](https://blog.learngoprogramming.com/golang-const-type-enums-iota-bc4befd096d3) _2017-10-19_ |
| 43 | * [Learn Go Constants](https://blog.learngoprogramming.com/learn-golang-typed-untyped-constants-70b4df443b61) _2017-10-10_ |
| 44 | * [Learn Go Variables](https://blog.learngoprogramming.com/learn-go-lang-variables-visual-tutorial-and-ebook-9a061d29babe) _2017-10-04_ |
| 45 | * [Introduction to Go Packages](https://blog.learngoprogramming.com/definitive-guide-to-go-packages-focus-on-the-fundamentals-to-empower-your-skills-d14aae7cd321) _2017-09-26_ |
| 46 | * [About Go Language — An Overview](https://blog.learngoprogramming.com/about-go-language-an-overview-f0bee143597c) _2017-09-20_ |
jbd@ | 6ccdbd7 | 2017-01-06 00:14:02 -0800 | [diff] [blame] | 47 | * [Debugging code generation in Go](https://rakyll.org/codegen/) _2016-10-15_ |
| 48 | * [Go tooling essentials](https://rakyll.org/go-tool-flags/) _2016-09-25_ |
Sobit Akhmedov | d525836 | 2016-02-29 15:41:25 +0100 | [diff] [blame] | 49 | * [Go from PHP engineer's perspective](http://sobit.me/2016/02/25/go-from-php-engineers-perspective/) _2016-02-25_ |
Jason Buberel | ad15ce5 | 2015-12-13 10:45:51 -0800 | [diff] [blame] | 50 | * [Go Proverbs, Illustrated](http://www.gregosuri.com/2015/12/04/go-proverbs-illustrated/) _2015-12-04_ |
Jason Buberel | 8a253c9 | 2015-11-29 08:23:31 -0800 | [diff] [blame] | 51 | * [A whirlwind tour of Go’s runtime environment variables](http://dave.cheney.net/2015/11/29/a-whirlwind-tour-of-gos-runtime-environment-variables) _2015-11-29_ |
Jason Buberel | c898c74 | 2015-11-21 09:57:06 -0800 | [diff] [blame] | 52 | * [Idiomatic Doc Comments: Document your function, not your function signature](http://whipperstacker.com/2015/10/14/idiomatic-doc-comments-document-your-function-not-your-function-signature/) _2015-10_14_ |
Jason Buberel | cc33383 | 2015-09-01 17:51:56 -0700 | [diff] [blame] | 53 | * [Best Practices for a new Go Developer](https://medium.com/@IndianGuru/best-practices-for-a-new-go-developer-8660384302fc) _2015-09-01_ |
Jason Buberel | ef2017a | 2015-08-30 16:20:06 -0700 | [diff] [blame] | 54 | * [Golang Refactoring Tools](http://blog.ralch.com/tutorial/golang-tools-refactoring/) _2015-08-30_ |
thepudds | c32ba03 | 2017-05-04 10:39:15 -0400 | [diff] [blame] | 55 | * [Working with Files in Go](http://www.devdungeon.com/content/working-files-go) _2015-08-23_ |
Jason Buberel | 95ef4e2 | 2015-09-07 18:42:54 -0700 | [diff] [blame] | 56 | * [Defer Fun](https://blog.klauspost.com/defer-fun/) _2015-07-25_ |
Jason Buberel | 0837345 | 2015-09-01 18:30:36 -0700 | [diff] [blame] | 57 | * [Things I learned teaching Go - Francesc Campoy](https://medium.com/@francesc/dotgo-things-i-learned-teaching-go-e999f33298cf) _2014-11-24_ |
Jason Buberel | cdf53bf | 2015-08-29 07:01:31 -0700 | [diff] [blame] | 58 | * [Understanding Go Packages](http://thenewstack.io/understanding-golang-packages/) _2014-11-01_ |
Jason Buberel | a4ed2ad | 2015-12-06 11:28:15 -0800 | [diff] [blame] | 59 | * [Structuring Applications in Go](https://medium.com/@benbjohnson/structuring-applications-in-go-3b04be4ff091#.kj6eym1u4) _2014-06-06_ |
Jason Buberel | ef014bb | 2015-10-17 10:18:52 -0700 | [diff] [blame] | 60 | * [Functional Options for Friendly APIs](http://dave.cheney.net/2014/10/17/functional-options-for-friendly-apis) _2014-10-17_ |
Jason Buberel | cdf53bf | 2015-08-29 07:01:31 -0700 | [diff] [blame] | 61 | * [Go Programming for Beginners](http://thenewstack.io/the-new-stack-intros-go-programming-for-beginners/) _2014-10-01_ |
Inanc Gumus | 11c87e1 | 2017-11-12 00:16:45 +0200 | [diff] [blame] | 62 | * [Switching from Python to Go](https://www.spacemonkey.com/blog/posts/go-space-monkey) _2014-04-21_ |
| 63 | * [Google Go: The Good, the Bad, and the Meh](http://blog.carlsensei.com/post/42828735125) _2013-02-10_ |
| 64 | * [What I Love About Go](http://npf.io/2013/01/what-i-love-about-go) _2013-01-25_ |
| 65 | * [Why I program in Go](http://tech.t9i.in/2013/01/why-program-in-go/) _2013-01-05_ |
Andrew Gerrand | 5bc444d | 2014-12-10 11:35:11 +1100 | [diff] [blame] | 66 | * [Go: A New Language for a New Year](http://kylelemons.net/2012/01/go-new-language-new-year/) _2012-01-06_ |
| 67 | * [Why you PHP guys should learn Golang](http://www.mikespook.com/2012/08/why-you-php-guys-should-learn-golang/) _2012-08-10_ |
| 68 | * [Why I went from Python to Go (and not node.js)](http://jordanorelli.tumblr.com/post/31533769172/why-i-went-from-python-to-go-and-not-node-js) _2012-09-14_ |
Andrew Gerrand | 5bc444d | 2014-12-10 11:35:11 +1100 | [diff] [blame] | 69 | |
| 70 | ## Concurrency / Channels |
Jason Buberel | 31e1741 | 2015-08-28 09:16:56 -0700 | [diff] [blame] | 71 | |
Kunal Kapadia | 7f27c3c | 2018-06-21 12:34:14 +0530 | [diff] [blame] | 72 | * [Learning Go concurrency through illustrations](https://medium.com/@trevor4e/learning-gos-concurrency-through-illustrations-8c4aff603b3) _2018-06-21_ |
jbd@ | 6ccdbd7 | 2017-01-06 00:14:02 -0800 | [diff] [blame] | 73 | * [Using contexts to avoid leaking goroutines](https://rakyll.org/leakingctx/) _2016-10-25_ |
Chad Whitacre | cb40145 | 2017-10-26 11:06:41 -0400 | [diff] [blame] | 74 | * [Concurrency in Go](http://www.minaandrawos.com/2015/12/06/concurrency-in-golang/) _2015-12-06_ |
Jason Buberel | 48d750c | 2015-11-21 09:49:25 -0800 | [diff] [blame] | 75 | * [Very basic concurrency for beginners in Go](https://medium.com/@matryer/very-basic-concurrency-for-beginners-in-go-663e63c6ba07#.n831uhdiq) _2015-11-18_ |
Jason Buberel | ef014bb | 2015-10-17 10:18:52 -0700 | [diff] [blame] | 76 | * [Exploting Powerful Cloud Services with Go](https://medium.com/@sathishvj/exploiting-your-powerful-cloud-servers-with-go-lang-s-concurrency-eae5f4c7526) _2015-10-11_ |
Jason Buberel | ca37ce2 | 2015-10-09 11:17:28 -0700 | [diff] [blame] | 77 | * [3 Trivial Concurrency Exercises for the Confused Newbie Gopher](http://whipperstacker.com/2015/10/05/3-trivial-concurrency-exercises-for-the-confused-newbie-gopher/) _2015-10-05_ |
Jason Buberel | 48d750c | 2015-11-21 09:49:25 -0800 | [diff] [blame] | 78 | * [Golang lock-free values with atomic.Value](https://texlution.com/post/golang-lock-free-values-with-atomic-value/) _2015-08-21_ |
Jason Buberel | 3037774 | 2015-09-19 10:28:53 -0700 | [diff] [blame] | 79 | * [Golang Pearl: Thread-safe writes and double checked locking in Go](http://blog.launchdarkly.com/golang-pearl-thread-safe-writes-and-double-checked-locking-in-go/) _2015-07-21_ |
Jason Buberel | 31e1741 | 2015-08-28 09:16:56 -0700 | [diff] [blame] | 80 | * [Building a Telnet Server in Go](http://synflood.at/tmp/golang-slides/mrmcd2012.html) _2015-08-28_ |
Jason Buberel | 3037774 | 2015-09-19 10:28:53 -0700 | [diff] [blame] | 81 | * [Fundamentals of concurrent programming](http://www.nada.kth.se/~snilsson/concurrency/) _2013-01-27_ |
Jason Buberel | 3037774 | 2015-09-19 10:28:53 -0700 | [diff] [blame] | 82 | * [Golang: Funny Play with Channel](http://www.mikespook.com/2012/05/golang-funny-play-with-channel/) _2012-05-25_ |
| 83 | * [Unlimited Buffering with Low Overhead](http://rogpeppe.wordpress.com/2010/02/10/unlimited-buffering-with-low-overhead/) _2010-02-10_ |
| 84 | * [Concurrent Idioms #1: Broadcasting values in Go with linked channels](http://rogpeppe.wordpress.com/2009/12/01/concurrent-idioms-1-broadcasting-values-in-go-with-linked-channels/) _2009-12-01_ |
Andrew Gerrand | 5bc444d | 2014-12-10 11:35:11 +1100 | [diff] [blame] | 85 | |
Jason Buberel | c51292c | 2015-10-03 08:17:33 -0700 | [diff] [blame] | 86 | ## Containers & Docker |
| 87 | |
Jason Buberel | 945d31c | 2015-10-03 08:54:20 -0700 | [diff] [blame] | 88 | * [Deploying a Go app to a minimal Docker container](http://www.giantflyingsaucer.com/blog/?p=5720) _2015-10-01_ |
Jason Buberel | f62e28f | 2015-10-03 08:56:13 -0700 | [diff] [blame] | 89 | * [Fetching a remote configuration using Docker and Consul](http://www.giantflyingsaucer.com/blog/?p=5701) _2015-09-30_ |
Jason Buberel | c51292c | 2015-10-03 08:17:33 -0700 | [diff] [blame] | 90 | * [Joining the Docker Ship and Go](http://thenewstack.io/make-a-restful-json-api-go/) _2015-07-01_ |
| 91 | * [Building Minimal Docker Images for Go](http://blog.codeship.com/building-minimal-docker-containers-for-go-applications/) _2015-04-23_ |
| 92 | |
Inanc Gumus | bd5f553 | 2017-11-12 00:13:00 +0200 | [diff] [blame] | 93 | ## Cross-Platform Development |
Jason Buberel | 9f52dca | 2015-11-29 08:10:11 -0800 | [diff] [blame] | 94 | * [Releasing cross-platform Go binaries using Goxc and BinTray in 5 minutes](http://jbu.io/2015/11/29/releasing-cross-platform-go-binaries-using-goxc-and-bintray-in-5-minutes/) _2015-11-29_ |
jbd@ | 6ccdbd7 | 2017-01-06 00:14:02 -0800 | [diff] [blame] | 95 | * [Calling Go from Swift](https://rakyll.org/swift/) _2015-10-3_ |
Jason Buberel | e6ad500 | 2015-09-25 09:10:25 -0700 | [diff] [blame] | 96 | * [On Go, portability, and system interfaces](http://garrett.damore.org/2015/09/on-go-portability-and-system-interfaces.html) _2015-09-22_ |
jbd@ | 6ccdbd7 | 2017-01-06 00:14:02 -0800 | [diff] [blame] | 97 | * [Go cross compilation](https://rakyll.org/cross-compilation/) _2015-09-8_ |
Jason Buberel | e6ad500 | 2015-09-25 09:10:25 -0700 | [diff] [blame] | 98 | |
Jason Buberel | ab7c2c0 | 2015-10-10 14:03:07 -0700 | [diff] [blame] | 99 | ## Error Handling |
| 100 | |
| 101 | * [Returning Errors](https://npf.io/2015/10/errors/) _2015-10-10_ |
Dave Cheney | e800242 | 2015-12-05 10:50:48 +1100 | [diff] [blame] | 102 | * [Inspecting Errors](http://dave.cheney.net/2014/12/24/inspecting-errors) _2014-12-24_ |
Jason Buberel | ab7c2c0 | 2015-10-10 14:03:07 -0700 | [diff] [blame] | 103 | |
Jason Buberel | c51292c | 2015-10-03 08:17:33 -0700 | [diff] [blame] | 104 | ## Interfaces / OOP |
| 105 | |
Jason Buberel | 6f9df14 | 2015-11-01 17:16:01 -0800 | [diff] [blame] | 106 | * [Generics in Golang with Code Generation](http://blog.ralch.com/tutorial/golang-code-generation-and-generics/) _2015-10-18_ |
Jason Buberel | c51292c | 2015-10-03 08:17:33 -0700 | [diff] [blame] | 107 | * [Composition with Go](http://www.goinggo.net/2015/09/composition-with-go.html) _2015-09-13_ |
bzub | 996f83c | 2018-01-06 18:31:34 -0600 | [diff] [blame] | 108 | * [Sorting Inventory Items in Go - the sort.Interface](https://adampresley.github.io/2015/09/06/sorting-inventory-items-in-go.html) _2015-09-06_ |
Colin Jones | f51615f | 2016-11-16 13:17:23 -0600 | [diff] [blame] | 109 | * [Loose Coupling in Go Lang](https://blog.8thlight.com/javier-saldana/2015/02/06/loose-coupling-in-go-lang.html) _2015-02-06_ |
Jason Buberel | c51292c | 2015-10-03 08:17:33 -0700 | [diff] [blame] | 110 | * [Interface Types in Go](https://medium.com/@rakyll/interface-pollution-in-go-7d58bccec275) _2014-10-18_ |
Jason Buberel | c51292c | 2015-10-03 08:17:33 -0700 | [diff] [blame] | 111 | * [How to use interfaces in Go](http://jordanorelli.tumblr.com/post/32665860244/how-to-use-interfaces-in-go) _2012-10-01_ |
| 112 | * [Go Object Oriented Design](http://nathany.com/good) _2013-01-14_ |
| 113 | * [It is ridiculously easy to refactor Go](http://www.onebigfluke.com/2013/01/it-is-ridiculously-easy-to-refactor-go.html) _2013-01-27_ |
| 114 | * [Functional Iteration in Go](http://hackthology.com/functional-iteration-in-go.html) _2013-12-13_ |
| 115 | * [Interfaces in Go - Russ Cox](http://research.swtch.com/interfaces) _2009-12-01_ |
| 116 | |
| 117 | |
| 118 | ## Mobile Applications |
| 119 | |
| 120 | Start by reading the [overview of mobile development](Mobile) documentation first. |
| 121 | |
| 122 | * [Go Mobile: Next generation of mobile apps](https://www.linkedin.com/pulse/go-mobile-next-generation-apps-daniele-baroncelli) _2015-09-18_ |
| 123 | * [iOS Apps with Go - Video by Josh Deprez](https://www.youtube.com/watch?v=bftMhhMIJNo) _2015-09-17_ |
| 124 | * [5 Part Series - Mobile Go](https://medium.com/using-go-in-mobile-apps) |
| 125 | |
Albert Moravec | c93481e | 2018-08-29 15:45:48 +0200 | [diff] [blame] | 126 | ## Modules |
| 127 | |
| 128 | * [Introduction to Go Modules](https://roberto.selbach.ca/intro-to-go-modules/) _2018-08-18_ |
| 129 | |
Jason Buberel | c51292c | 2015-10-03 08:17:33 -0700 | [diff] [blame] | 130 | ## Performance and Profiling |
jbd@ | 7188509 | 2017-01-06 00:15:04 -0800 | [diff] [blame] | 131 | * [Mutex profile](https://rakyll.org/mutexprofile/) _2016-12-19_ |
Jason Buberel | 9f52dca | 2015-11-29 08:10:11 -0800 | [diff] [blame] | 132 | * [How to Optimize Garbage Collection in Go](http://www.cockroachlabs.com/blog/how-to-optimize-garbage-collection-in-go/) _2015-11-23_ |
Jason Buberel | 0de3754 | 2015-11-07 07:47:14 -0800 | [diff] [blame] | 133 | * [Golang Escape Analysis](http://www.agardner.me/golang/garbage/collection/gc/escape/analysis/2015/10/18/go-escape-analysis.html) _2015-10-18_ |
Jason Buberel | 945d31c | 2015-10-03 08:54:20 -0700 | [diff] [blame] | 134 | * [A Pattern for Optimizing Go](http://blog.signalfx.com/a-pattern-for-optimizing-go) _2015-09-24_ |
Jason Buberel | c51292c | 2015-10-03 08:17:33 -0700 | [diff] [blame] | 135 | * [Golang Performance Tips](https://joshrendek.com/2015/09/golang-performance-tips/) _2015-09-20_ |
| 136 | * [Answering your own (performance) questions in Go](http://www.sanarias.com/blog/915LearningtoansweryourownquestionsinGo) _2015-09-15_ |
| 137 | * [Concise Guide to profiling go programs](https://medium.com/@tjholowaychuk/profiling-golang-851db2d9ae24) _2014-08-09_ |
| 138 | * [Go Performance Observations](http://hashrocket.com/blog/posts/go-performance-observations) _2014-08-07_ |
| 139 | * [Debugging performance issues in Go programs - Intel](https://software.intel.com/en-us/blogs/2014/05/10/debugging-performance-issues-in-go-programs) _2014-05-10_ |
| 140 | * [How to write benchmarks in Go](http://dave.cheney.net/2013/06/30/how-to-write-benchmarks-in-go) _2013-06-30_ |
| 141 | * [Profiling Go Programs - Go blog](http://blog.golang.org/profiling-go-programs) _2011-06-24_ |
| 142 | |
| 143 | ## Pointers, References and Memory Management |
| 144 | |
| 145 | * [Equality and Type Aliases](https://akutz.wordpress.com/2015/09/02/golang-equality-and-type-aliases/) _2015-09-02_ |
| 146 | * [Pointers vs References](http://spf13.com/post/go-pointers-vs-references/) _2014-06-01_ |
Jason Buberel | c51292c | 2015-10-03 08:17:33 -0700 | [diff] [blame] | 147 | * [Recycling Memory Buffers in Go](https://blog.cloudflare.com/recycling-memory-buffers-in-go/) _2013-08-24_ |
| 148 | * [Learning Go Types](http://www.laktek.com/2012/01/27/learning-go-types/) _2012-01-27_ |
| 149 | |
| 150 | ## Reflection |
| 151 | |
| 152 | * [Go Reflection Index](https://jimmyfrasche.github.io/go-reflection-codex/) by Jimmy Frasche |
| 153 | |
| 154 | ## Security |
| 155 | |
Jason Buberel | 9f52dca | 2015-11-29 08:10:11 -0800 | [diff] [blame] | 156 | * [Mutual TLS authentication in Go](http://www.levigross.com/2015/11/21/mutual-tls-authentication-in-go/) _2015-11-21_ |
| 157 | * [Whispered Secrets - The case for building software with privacy as a primary concern](http://www.slideshare.net/feyeleanor/whispered-secrets-52966860) _2015-09-19_ |
| 158 | |
| 159 | ## Testing |
| 160 | |
Milica | 08c5f68 | 2016-12-07 17:58:32 +0100 | [diff] [blame] | 161 | * [Getting Started with BDD in Go Using Ginkgo](https://semaphoreci.com/community/tutorials/getting-started-with-bdd-in-go-using-ginkgo) _2016-07-12_ |
Jason Buberel | ad15ce5 | 2015-12-13 10:45:51 -0800 | [diff] [blame] | 162 | * [Integration testing in Go using Docker](https://divan.github.io/posts/integration_testing/) _2015-12-07_ |
Jason Buberel | 00455ab | 2015-12-06 11:39:22 -0800 | [diff] [blame] | 163 | * [Debugging Go Programs with Delve](https://blog.gopheracademy.com/advent-2015/debugging-with-delve/) _2015-12-03_ |
Jason Buberel | 9f52dca | 2015-11-29 08:10:11 -0800 | [diff] [blame] | 164 | * [Upgrade Your Appengine Tests with Testify](http://csfortheslothful.blogspot.com/2015/11/upgrade-your-appengine-tests-with.html) _2015_11_21_ |
Jason Buberel | c51292c | 2015-10-03 08:17:33 -0700 | [diff] [blame] | 165 | |
Jason Buberel | 39c947a | 2015-09-19 10:59:18 -0700 | [diff] [blame] | 166 | ## Web & API Development |
Jason Buberel | 22f71b6 | 2015-08-29 15:10:51 -0700 | [diff] [blame] | 167 | |
Jason Buberel | c7c89e2 | 2015-09-05 16:03:16 -0700 | [diff] [blame] | 168 | Start by reading the [overview of server programming](LearnServerProgramming) documentation first. |
Sendil Kumar N | 0220f68 | 2018-08-14 17:57:53 +0200 | [diff] [blame] | 169 | * [Get started with Go and WebAssembly](https://medium.com/@sendilkumarn/getting-started-into-go-and-webassembly-8491b133a616) _2018-08-14_ |
jbd@ | 9f64068 | 2017-01-06 00:16:03 -0800 | [diff] [blame] | 170 | * [HTTP/2 Server Push](https://rakyll.org/http2push/) _2016-12-10_ |
Matt Silverlock | c0915b2 | 2015-12-15 06:42:04 +0800 | [diff] [blame] | 171 | * [Preventing Cross-Site Request Forgery in Go](https://elithrar.github.io/article/preventing-csrf-attacks-in-go/) _2015-12-14_ |
Jason Buberel | ad15ce5 | 2015-12-13 10:45:51 -0800 | [diff] [blame] | 172 | * [goa: Untangling Microservices](https://blog.gopheracademy.com/advent-2015/goaUntanglingMicroservices/) _2015-12-07_ |
Jason Buberel | 0de3754 | 2015-11-07 07:47:14 -0800 | [diff] [blame] | 173 | * [A Weekend with Go, Beego and React](http://foreman-shlomizadok.rhcloud.com/2015/11/03/a-weekend-with-go-lang-beego-react/) _2015-11-03_ |
Jason Buberel | 5886994 | 2015-09-25 09:14:26 -0700 | [diff] [blame] | 174 | * [HTTP Session Handling on Heroku](https://devcenter.heroku.com/articles/go-sessions) _2015-09-09_ |
Jason Buberel | 3b6f94a | 2015-09-19 11:36:47 -0700 | [diff] [blame] | 175 | * [Go Resiliency Patterns](https://github.com/eapache/go-resiliency) _2015-09-01_ |
Matt Silverlock | c0915b2 | 2015-12-15 06:42:04 +0800 | [diff] [blame] | 176 | * [http.Handler and Error Handling in Go](https://elithrar.github.io/article/http-handler-error-handling-revisited/) _2015-07-02_ |
Jason Buberel | 1fecbe8 | 2015-09-15 08:59:59 -0700 | [diff] [blame] | 177 | * [Deploy a golang photo archive tool to the cloud on IBM BlueMix](http://www.ibm.com/developerworks/cloud/library/cl-golang-photo-archive-bluemix/index.html) _2015-06-05_ |
Jason Buberel | 576b3da | 2015-09-13 18:27:54 -0700 | [diff] [blame] | 178 | * [A Journey into Microservices - Part 1](https://sudo.hailoapp.com/services/2015/03/09/journey-into-a-microservice-world-part-1/), [Part 2](https://sudo.hailoapp.com/services/2015/03/09/journey-into-a-microservice-world-part-2/), [Part 3](https://sudo.hailoapp.com/services/2015/03/09/journey-into-a-microservice-world-part-3/) _2015-03_09_ |
Jason Buberel | 22f71b6 | 2015-08-29 15:10:51 -0700 | [diff] [blame] | 179 | * [Making a RESTful JSON API in Go](http://thenewstack.io/make-a-restful-json-api-go/) _2015-01-01_ |
| 180 | * [Building a Web Server in Go](http://thenewstack.io/building-a-web-server-in-go/) _2014-09-01_ |
Jason Buberel | 22f71b6 | 2015-08-29 15:10:51 -0700 | [diff] [blame] | 181 | * [Painless Web Handlers in Go](http://shadynasty.biz/blog/2012/08/07/painless-web-handlers-in-go/) _2012-08-07_ |
| 182 | * [Implementing Chat with WebSockets](http://gary.beagledreams.com/page/go-websocket-chat.html) _2012-03-22_ |
| 183 | |
Andrew Gerrand | 5bc444d | 2014-12-10 11:35:11 +1100 | [diff] [blame] | 184 | |
| 185 | ## Misc |
Jason Buberel | 88fe84a | 2015-08-30 12:53:00 -0700 | [diff] [blame] | 186 | |
Kai Wähner | c807ed4 | 2016-11-07 13:42:52 +0100 | [diff] [blame] | 187 | * [Go-powered Open Source IoT Integration Framework "Flogo"](http://www.kai-waehner.de/blog/2016/11/03/open-source-project-flogo-overview/) _2016-11-07_ |
Jason Buberel | 39c947a | 2015-09-19 10:59:18 -0700 | [diff] [blame] | 188 | * [Build Slack Slash Commands with Go](http://www.programmableweb.com/news/how-to-use-slack-api-to-build-slash-commands-powered-google-app-engine-and-go/how-to/2015/09/16) _2015-09-15_ |
Jason Buberel | 88fe84a | 2015-08-30 12:53:00 -0700 | [diff] [blame] | 189 | * [String Matching by Damian Gryski](http://blog.gopheracademy.com/advent-2014/string-matching/) _2014-12-05_ |
Andrew Gerrand | 5bc444d | 2014-12-10 11:35:11 +1100 | [diff] [blame] | 190 | * [State machines in Go (#golang)](http://denis.papathanasiou.org/?p=1190) _2013-02-10_ |
Satish Talim | e6d192f | 2015-08-30 10:05:33 +0530 | [diff] [blame] | 191 | * [Go & Assembly](http://www.doxsey.net/blog/go-and-assembly) _2013-02-05_ |
| 192 | * [Function Types in Go (golang)](http://jordanorelli.tumblr.com/post/42369331748/function-types-in-go-golang) _2013-02-05_ |
Satish Talim | e6d192f | 2015-08-30 10:05:33 +0530 | [diff] [blame] | 193 | * [Optimizing Real World Go](http://bpowers.github.com/weblog/2013/01/05/optimizing-real-world-go/) _2013-01-05_ |
| 194 | * [Methods as Objects in Go](http://ernestmicklei.com/2012/11/26/methods-as-objects-in-go/) _2012-12-26_ |
| 195 | * [Applying The Clean Architecture to Go applications](http://manuel.kiessling.net/2012/09/28/applying-the-clean-architecture-to-go-applications/) _2012-09-08_ |
Satish Talim | 22e8fe2 | 2015-08-30 10:08:04 +0530 | [diff] [blame] | 196 | * [An introduction to cross compilation with Go](http://dave.cheney.net/2012/09/08/an-introduction-to-cross-compilation-with-go) _2012-09-08_ |
| 197 | * [Function Call by Name in Golang](http://www.mikespook.com/2012/07/function-call-by-name-in-golang/) _2012-07-05_ |
| 198 | * [Using the Go Regexp Package](http://blog.kamilkisiel.net/blog/2012/07/05/using-the-go-regexp-package/) _2012-07-05_ |
| 199 | * [Zero Downtime upgrades of TCP servers in Go](http://blog.nella.org/?p=879) _2012-05-29_ |
Andrew Gerrand | 5bc444d | 2014-12-10 11:35:11 +1100 | [diff] [blame] | 200 | * [Go Reflection Codex](http://jimmyfrasche.github.io/go-reflection-codex/) |
Ezequiel Moreno | 015e4ea | 2015-09-30 17:20:53 -0300 | [diff] [blame] | 201 | * [Go JSON Marshalling and Unmarshalling cheatsheet](https://eager.io/blog/go-and-json/) _2015-09-30_ |
Andrew Gerrand | 5bc444d | 2014-12-10 11:35:11 +1100 | [diff] [blame] | 202 | |
| 203 | |
Jason Buberel | 2505555 | 2015-08-29 07:05:14 -0700 | [diff] [blame] | 204 | ## Chinese |
Andrew Gerrand | 5bc444d | 2014-12-10 11:35:11 +1100 | [diff] [blame] | 205 | * [How to write Go code](http://chenxiaoyu.org/2012/03/14/howto-write-golang-code.html) |
| 206 | * [Test Go module](http://chenxiaoyu.org/2012/12/07/golang-module-test-benchmark.html) |
| 207 | * [Build web application with golang](https://github.com/astaxie/build-web-application-with-golang) |
| 208 | * [Go语言评估报告](https://docs.google.com/document/d/1NosYIbM6tfBqKh49BrHOngBfXuT1MfrvYXwc_ikwuMk/edit) |
| 209 | * [Why you PHP guys should learn Golang](http://www.mikespook.com/2012/08/%e4%b8%ba%e4%bb%80%e4%b9%88phper%e5%ba%94%e5%bd%93%e5%ad%a6%e4%b9%a0golang/) |
| 210 | * [Function Call by Name in Golang](http://www.mikespook.com/2012/07/%e5%9c%a8-golang-%e4%b8%ad%e7%94%a8%e5%90%8d%e5%ad%97%e8%b0%83%e7%94%a8%e5%87%bd%e6%95%b0/) |
| 211 | * [Golang: Funny Play with Channel](http://www.mikespook.com/2012/06/golang-channel-%e6%9c%89%e8%b6%a3%e7%9a%84%e5%ba%94%e7%94%a8/) |
| 212 | * [Using MyMySQL - A interface of database/sql](http://www.mikespook.com/2012/05/mymysql-%e7%9a%84-databasesql-%e6%8e%a5%e5%8f%a3%e4%bd%bf%e7%94%a8/) |
| 213 | * [Go did What on the Stack?](http://www.mikespook.com/2011/03/go%e5%9c%a8stack%e4%b8%8a%e5%b9%b2%e4%ba%86%e7%a5%9e%e9%a9%ac%ef%bc%9f/) |
| 214 | * [Gobs on the wire (Translation)](http://www.mikespook.com/2011/03/%e7%bf%bb%e8%af%91%e9%a3%9e%e7%bf%94%e7%9a%84-gob/) |
| 215 | * [Go Environment Setup (Translation)](http://www.mikespook.com/2012/02/%E7%BF%BB%E8%AF%91go-%E7%8E%AF%E5%A2%83%E8%AE%BE%E7%BD%AE/) |
| 216 | * [Error Handling and Go (Translation)](http://www.mikespook.com/2011/08/%E9%94%99%E8%AF%AF%E5%A4%84%E7%90%86%E5%92%8Cgo/) |
| 217 | * [The Go Tool (Translation)](http://www.mikespook.com/2012/02/%E7%BF%BB%E8%AF%91go-%E5%B7%A5%E5%85%B7/) |
| 218 | * [Less is exponentially more (Translation)](http://www.mikespook.com/2012/06/%E7%BF%BB%E8%AF%91%E5%B0%91%E6%98%AF%E6%8C%87%E6%95%B0%E7%BA%A7%E7%9A%84%E5%A4%9A/) |
| 219 | * [Zero Downtime upgrades of TCP servers in Go (Translation)](http://www.mikespook.com/2012/05/%E7%BF%BB%E8%AF%91%E7%94%A8-go-%E5%AE%9E%E7%8E%B0%E9%9B%B6%E5%81%9C%E6%9C%BA%E5%8D%87%E7%BA%A7-tcp-%E6%9C%8D%E5%8A%A1/) |
ipfans | 952353b | 2019-03-20 14:56:55 +0800 | [diff] [blame] | 220 | * [Using Go Modules (Translation)](https://www.4async.com/2019/03/using-go-modules/) |
Andrew Gerrand | 5bc444d | 2014-12-10 11:35:11 +1100 | [diff] [blame] | 221 | |
Jason Buberel | 2505555 | 2015-08-29 07:05:14 -0700 | [diff] [blame] | 222 | ## Czech |
Andrew Gerrand | 5bc444d | 2014-12-10 11:35:11 +1100 | [diff] [blame] | 223 | * [Google Go - 1st birthday](http://www.abclinuxu.cz/clanky/google-go-1.-narozeniny) |
| 224 | * [Google Go - what we find in the kit](http://www.abclinuxu.cz/clanky/google-go-co-najdeme-ve-stavebnici) |
| 225 | * [Google Go - advanced topics](http://www.abclinuxu.cz/clanky/google-go-pokrocilejsi-temata) |
| 226 | * [Google Go by examples I.](http://www.abclinuxu.cz/clanky/google-go-v-prikladech-1) |
| 227 | * [Google Go by examples II.](http://www.abclinuxu.cz/clanky/google-go-v-prikladech-2) |
| 228 | * [Error handling in Go](http://www.abclinuxu.cz/clanky/osetrovani-chyb-v-go) |
| 229 | * [Google Go - The Laws of Reflection](http://www.abclinuxu.cz/clanky/google-go-pravidla-reflexe) |
| 230 | * [Google Go - 2nd birthday](http://www.abclinuxu.cz/clanky/google-go-2.-narozeniny) |
| 231 | |
Jason Buberel | 2505555 | 2015-08-29 07:05:14 -0700 | [diff] [blame] | 232 | ## German |
Sönke J. Peters | ef8a0c6 | 2018-09-05 13:28:01 +0200 | [diff] [blame] | 233 | * [Der GoLang-Spicker](https://archium.org/Golang#Ein_Go-Spickzettel_.28zu_deutsch_.22Cheat_Sheet.22.29) _2018-08-30_ |
Andrew Gerrand | 5bc444d | 2014-12-10 11:35:11 +1100 | [diff] [blame] | 234 | * [Programmiersprachen im Multicore Zeitalter - Google GO und Nebenläufigkeit](http://ps.informatik.uni-siegen.de/downloads/Seminare/multicore-ws2011/donner.pdf) ` [PDF] ` _2012-02-02_ |
| 235 | * [A list of German press articles about Go](http://www.hweidner.de/redmine/projects/pub/wiki/Golang_Presse) |
| 236 | |
Jason Buberel | 2505555 | 2015-08-29 07:05:14 -0700 | [diff] [blame] | 237 | ## Japanese |
Andrew Gerrand | 5bc444d | 2014-12-10 11:35:11 +1100 | [diff] [blame] | 238 | * [WindowsでGo言語のまとめ](http://esten.wankuma.com/) |
Andrew Gerrand | 5bc444d | 2014-12-10 11:35:11 +1100 | [diff] [blame] | 239 | * [Go言語で jQuery ライクな操作が出来る goquery を試した。](http://mattn.kaoriya.net/software/lang/go/20120914184828.htm) |
| 240 | * [Go言語向けの ORM、gorp がなかなか良い](http://mattn.kaoriya.net/software/lang/go/20120914222828.htm) |
| 241 | * [GAE/GでGoogle Cloud Storageを利用するには(1)](http://takashi-yokoyama.blogspot.jp/2012/08/gaeggoogle-cloud-storage.html) |
| 242 | * [Go言語のWebフレームワーク"goweb"をGAE/Gで動かす](http://takashi-yokoyama.blogspot.jp/2012/07/gowebgowebgaeg.html) |
| 243 | * [Ubuntu 12.04にgolangを”ソースから”インストールする。](http://takashi-yokoyama.blogspot.jp/2012/07/ubuntu-1204golang.html) |
Jongmin Kim | e927f07 | 2015-01-15 00:05:47 +0900 | [diff] [blame] | 244 | * [GAE/Gで時間のチェック(Datastore編)](http://takashi-yokoyama.blogspot.jp/2012/06/gaegdatastore.html) |
| 245 | |
Jason Buberel | 2505555 | 2015-08-29 07:05:14 -0700 | [diff] [blame] | 246 | ## Korean |
Jongmin Kim | e927f07 | 2015-01-15 00:05:47 +0900 | [diff] [blame] | 247 | * [The Go Programming Language](http://www.slideshare.net/golanger/abou-go) |
| 248 | * [You can read Go code](http://goo.gl/vUeSzl) |
김재훈 | 1cdeb11 | 2016-10-13 01:14:39 +0900 | [diff] [blame] | 249 | * [Go channel tutorial](http://blog.sabzil.org/2014/12/golang-channels-tutorial) |
Jongmin Kim | e927f07 | 2015-01-15 00:05:47 +0900 | [diff] [blame] | 250 | * [Go character encoding](http://www.slideshare.net/suapapa/go-character-encoding) |
| 251 | * [Using Google API in Go](http://www.slideshare.net/golanger/using-google-api-in-go) |
arahansa | bd58208 | 2015-01-15 02:00:44 +0900 | [diff] [blame] | 252 | * [Go로 Git 들여다보기](http://goo.gl/nCDV3I) |
Jason Buberel | 2505555 | 2015-08-29 07:05:14 -0700 | [diff] [blame] | 253 | * [Go: 90% 완벽?!, 100% of the time 슬라이드 번역 ](http://100coding.com/go/slide) |
| 254 | * [Go 동시성 패턴 advanced 영상 번역](http://www.youtube.com/watch?v=4g2skln42eo) |
| 255 | * [Go + Revel + Gorp 간단 게시판 만들기](http://100coding.com/go/tutorial/1) |
Dave Cheney | e800242 | 2015-12-05 10:50:48 +1100 | [diff] [blame] | 256 | * [Go + Revel + Gorm 으로 만드는 블로그](https://github.com/jaehue/goblog/wiki/Hello-World) |