User Tools

Site Tools


go_references

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
go_references [2018/04/25 17:40]
luciano [Criticism]
go_references [2019/10/03 06:49] (current)
luciano [Iterators]
Line 10: Line 10:
   * [[http://​yourbasic.org/​golang/​|Your basic Go]]   * [[http://​yourbasic.org/​golang/​|Your basic Go]]
   * [[https://​medium.com/​@yunabe/​interactive-go-programming-with-jupyter-93fbf089aff1|Interactive Go programming with Jupyter]]   * [[https://​medium.com/​@yunabe/​interactive-go-programming-with-jupyter-93fbf089aff1|Interactive Go programming with Jupyter]]
- 
  
 ===== Language design and usage ===== ===== Language design and usage =====
Line 18: Line 17:
   * [[https://​go-proverbs.github.io/​|Go Proverbs]]   * [[https://​go-proverbs.github.io/​|Go Proverbs]]
   * [[A story about simplicity in Go]] by [[https://​twitter.com/​rakyll|@rakyll]]   * [[A story about simplicity in Go]] by [[https://​twitter.com/​rakyll|@rakyll]]
-  * [[https://​rakyll.org/​typesystem/​|The Go type system for newcomers]] by [[https://​twitter.com/​rakyll|@rakyll]] 
   * [[https://​rakyll.org/​leakingctx/​|Using contexts to avoid leaking goroutines]] by [[https://​twitter.com/​rakyll|@rakyll]]   * [[https://​rakyll.org/​leakingctx/​|Using contexts to avoid leaking goroutines]] by [[https://​twitter.com/​rakyll|@rakyll]]
-  * [[https://​rakyll.org/​interface-pollution/​|Interface pollution in Go]] by [[https://​twitter.com/​rakyll|@rakyll]] 
-  * [[https://​www.ardanlabs.com/​blog/​2016/​10/​avoid-interface-pollution.html|Avoid interface pollution]] by William Kennedy ​ 
   * [[https://​www.ardanlabs.com/​blog/​all-posts.html|Ardan Labs Blog]] by William Kennedy   * [[https://​www.ardanlabs.com/​blog/​all-posts.html|Ardan Labs Blog]] by William Kennedy
   * [[https://​github.com/​golang/​go/​wiki/​SliceTricks|Slice tricks]] (Go Wiki)   * [[https://​github.com/​golang/​go/​wiki/​SliceTricks|Slice tricks]] (Go Wiki)
Line 28: Line 24:
   * [[http://​gsquire.github.io/​static/​post/​cleaner-go/​|Cleaner Go]]: static analysis tools with examples.   * [[http://​gsquire.github.io/​static/​post/​cleaner-go/​|Cleaner Go]]: static analysis tools with examples.
   * [[https://​www.youtube.com/​watch?​v=ABGF_ryhFzM|Go for Object Oriented Programmers]] by Steve Francia   * [[https://​www.youtube.com/​watch?​v=ABGF_ryhFzM|Go for Object Oriented Programmers]] by Steve Francia
 +  * [[https://​www.youtube.com/​watch?​v=sX8r6zATHGU|Go:​ building on the shoulders of giants and stepping on a few toes]] by Steve Francia
 +  * [[https://​medium.com/​statuscode/​how-i-write-go-http-services-after-seven-years-37c208122831|How I write Go HTTP services after seven years]]
 +  * [[https://​dave.cheney.net/​2018/​01/​08/​gos-hidden-pragmas|Go'​s hidden pragmas]]
 +  * [[https://​www.youtube.com/​watch?​v=sln-gJaURzk|Meet the Go Team]] (2012)
 +
 +
 +==== Types & Interfaces ====
 +
 +  * [[https://​rakyll.org/​typesystem/​|The Go type system for newcomers]] by [[https://​twitter.com/​rakyll|@rakyll]]
 +  * [[https://​rakyll.org/​interface-pollution/​|Interface pollution in Go]] by [[https://​twitter.com/​rakyll|@rakyll]]
 +  * [[https://​www.ardanlabs.com/​blog/​2016/​10/​avoid-interface-pollution.html|Avoid interface pollution]] by William Kennedy ​
 +  * [[https://​medium.com/​@haya14busa/​sum-union-variant-type-in-go-and-static-check-tool-of-switch-case-handling-3bfc61618b1e|Sum/​Union/​Variant Type in Go and Static Check Tool of switch-case handling]]
 +
  
 ==== Gotchas and common mistakes ==== ==== Gotchas and common mistakes ====
Line 36: Line 45:
   * [[http://​devs.cloudimmunity.com/​gotchas-and-common-mistakes-in-go-golang/​|Gotchas and common mistakes]]   * [[http://​devs.cloudimmunity.com/​gotchas-and-common-mistakes-in-go-golang/​|Gotchas and common mistakes]]
   * [[http://​devs.cloudimmunity.com/​gotchas-and-common-mistakes-in-go-golang/​|50 Shades of Go: Traps, Gotchas, and Common Mistakes for New Golang Devs]]   * [[http://​devs.cloudimmunity.com/​gotchas-and-common-mistakes-in-go-golang/​|50 Shades of Go: Traps, Gotchas, and Common Mistakes for New Golang Devs]]
 +  * [[https://​medium.com/​@cep21/​gos-append-is-not-always-thread-safe-a3034db7975|Go’s append is not always thread safe]]
  
 ==== Value vs pointer methods ==== ==== Value vs pointer methods ====
Line 42: Line 52:
   * [[https://​golang.org/​doc/​faq#​methods_on_values_or_pointers|Should I define methods on values or pointers?]] (Go FAQ)   * [[https://​golang.org/​doc/​faq#​methods_on_values_or_pointers|Should I define methods on values or pointers?]] (Go FAQ)
  
 +==== Iterators ====
 +
 +  * [[https://​ewencp.org/​blog/​golang-iterators/​index.html|Iterators in Go]]: A Survey of Iterator (or Generator) Patterns in golang
 +  * [[https://​blog.kowalczyk.info/​article/​1Bkr/​3-ways-to-iterate-in-go.html|3 ways to iterate in Go]]
 ===== Functions ===== ===== Functions =====
  
Line 67: Line 81:
   * [[https://​commandcenter.blogspot.com.br/​2017/​12/​error-handling-in-upspin.html|Error handling in Upspin]] by Rob Pike   * [[https://​commandcenter.blogspot.com.br/​2017/​12/​error-handling-in-upspin.html|Error handling in Upspin]] by Rob Pike
   * [[https://​go-talks.appspot.com/​github.com/​edmontongo/​presentations/​2018-01/​err/​err.slide|to,​ err := human()]]: wide ranging slides with lots of references at the end.   * [[https://​go-talks.appspot.com/​github.com/​edmontongo/​presentations/​2018-01/​err/​err.slide|to,​ err := human()]]: wide ranging slides with lots of references at the end.
 +  * [[https://​medium.com/​rose-rocket/​seeking-helpful-errors-in-go-with-xerrs-84e6458b893e|Seeking Helpful Errors in Go with xerrs]] 
 +  * [[https://​slides.com/​marwansameer/​handling-go-errors#/​|Handling Go Errors (at The New York Times)]] by [[https://​twitter.com/​MarwanSulaiman|Marwan Sulaiman]]
 ===== Testing ===== ===== Testing =====
  
Line 83: Line 98:
 ==== Packages ==== ==== Packages ====
  
-  * [[https://​labix.org/​gocheck|package check]]: rich testing for the Go language by Gustavo Niemeyer+  * [[https://​labix.org/​gocheck|package check]]: rich testing for the Go language by Gustavo Niemeyer ​(unmaintained?​)
   * [[https://​godoc.org/​github.com/​morhekil/​mw/​chaotic|chaotic]]:​ middleware to inject delays and failures into requests processed by the Go HTTP stack.   * [[https://​godoc.org/​github.com/​morhekil/​mw/​chaotic|chaotic]]:​ middleware to inject delays and failures into requests processed by the Go HTTP stack.
   * [[https://​github.com/​google/​go-cmp|Google'​s go-cmp package]]   * [[https://​github.com/​google/​go-cmp|Google'​s go-cmp package]]
Line 99: Line 114:
   * [[https://​www.calhoun.io/​why-are-slices-sometimes-altered-when-passed-by-value-in-go/​|Why are slices sometimes altered when passed by value in Go?]] by Jon Calhoun   * [[https://​www.calhoun.io/​why-are-slices-sometimes-altered-when-passed-by-value-in-go/​|Why are slices sometimes altered when passed by value in Go?]] by Jon Calhoun
   * [[https://​medium.com/​@vCabbage/​golang-understanding-slices-through-code-e098cd2467ea|Understanding Slices through Code]] by Kale Blankenship ([[https://​twitter.com/​vCabbage|vCabbage]])   * [[https://​medium.com/​@vCabbage/​golang-understanding-slices-through-code-e098cd2467ea|Understanding Slices through Code]] by Kale Blankenship ([[https://​twitter.com/​vCabbage|vCabbage]])
 +  * [[https://​tylerchr.blog/​golang-arbitrary-memory/​|https://​tylerchr.blog/​golang-arbitrary-memory/​]]
  
 ===== Concurrency ===== ===== Concurrency =====
Line 104: Line 120:
   * [[https://​www.infoq.com/​presentations/​go-concurrency-gc|The Why of Go]]   * [[https://​www.infoq.com/​presentations/​go-concurrency-gc|The Why of Go]]
   * [[http://​dahernan.github.io/​2015/​02/​04/​context-and-cancellation-of-goroutines/​|Context and cancellation of goroutines]]   * [[http://​dahernan.github.io/​2015/​02/​04/​context-and-cancellation-of-goroutines/​|Context and cancellation of goroutines]]
 +  * [[https://​godoc.org/​golang.org/​x/​sync/​errgroup|Package errgroup]] provides synchronization,​ error propagation,​ and Context cancelation for groups of goroutines working on subtasks of a common task.
  
 ===== Deployment ===== ===== Deployment =====
Line 114: Line 131:
   * [[https://​ieftimov.com/​golang-package-multiple-binaries|Packing multiple binaries in a Golang package]]   * [[https://​ieftimov.com/​golang-package-multiple-binaries|Packing multiple binaries in a Golang package]]
   * [[https://​jve.linuxwall.info/​blog/​index.php?​post/​2015/​08/​26/​Hosting_Go_code_on_Github_with_custom_import_path|Hosting Go code on Github with a custom import path]]   * [[https://​jve.linuxwall.info/​blog/​index.php?​post/​2015/​08/​26/​Hosting_Go_code_on_Github_with_custom_import_path|Hosting Go code on Github with a custom import path]]
 +
 +==== Modules ====
 +
 +  * [[https://​roberto.selbach.ca/​intro-to-go-modules/​|Introduction to Go Modules]] intro with practical examples (post suggested by [[https://​twitter.com/​thepudds1|@thepudds1]])
 +  * [[https://​www.youtube.com/​watch?​list=PLq2Nv-Sh8EbbIjQgDzapOFeVfv5bGOoPE&​v=F8nrpe0XWRg|The Principles of Versioning in Go]] by Russ Cox (video suggested by [[https://​twitter.com/​thepudds1|@thepudds1]])
  
 ===== Code generation ===== ===== Code generation =====
Line 145: Line 167:
   * [[https://​github.com/​gosuri/​uiprogress|gosuri/​uiprogress]]:​ render progress bars in terminal applications   * [[https://​github.com/​gosuri/​uiprogress|gosuri/​uiprogress]]:​ render progress bars in terminal applications
   * [[https://​github.com/​SimonWaldherr/​golibs|golang functions]] to be included in other projects   * [[https://​github.com/​SimonWaldherr/​golibs|golang functions]] to be included in other projects
-  * [[https://​github.com/​dvyukov/​go-fuzz|go-fuzz 
   * [[https://​github.com/​pquerna/​ffjson|ffjson]]:​ faster JSON serialization   * [[https://​github.com/​pquerna/​ffjson|ffjson]]:​ faster JSON serialization
 +  * [[https://​github.com/​tfriedel6/​canvas|canvas]]:​ HTML5 canvas API in Go
  
-=== Embedding data in executables ===+==== Embedding data in executables ​====
  
   * [[https://​github.com/​jteeuwen/​go-bindata|go-bindata]] embeds binary data in a Go program.   * [[https://​github.com/​jteeuwen/​go-bindata|go-bindata]] embeds binary data in a Go program.
Line 170: Line 192:
   * [[https://​github.com/​alash3al/​wsify|Wsify]]:​ tiny real-time pub/sub server with [[https://​redis.io/​|Redis]]   * [[https://​github.com/​alash3al/​wsify|Wsify]]:​ tiny real-time pub/sub server with [[https://​redis.io/​|Redis]]
   * [[https://​gist.github.com/​aarti/​71a2570d99062424a3386def98c2eb2e|Handler vs HandlerFunc]] ​   * [[https://​gist.github.com/​aarti/​71a2570d99062424a3386def98c2eb2e|Handler vs HandlerFunc]] ​
- +  * [[https://​github.com/​jaffee/​encfile|enfile]]:​ file encryption in 60 lines
  
 {{tag>​golang programming_language}} {{tag>​golang programming_language}}
  
 ~~DISQUS~~ ~~DISQUS~~
go_references.1524703210.txt.gz · Last modified: 2018/04/25 17:40 by luciano