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
Last revision Both sides next revision
go_references [2018/04/25 17:40]
luciano [Criticism]
go_references [2019/10/03 06:49]
luciano [Value vs pointer methods]
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 82:
   * [[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 99:
 ==== 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 115:
   * [[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 121:
   * [[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 132:
   * [[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 168:
   * [[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 193:
   * [[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.txt · Last modified: 2019/10/03 06:49 by luciano