Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- meta
- grep '^[^ ]' $% |mc
- . Import from http://go.dev/wiki
- . Wherever possible, save slides locally
- http://go.dev/wiki/Learn
- http://go.dev/wiki/Conferences
- Why Learn Go? http://youtu.be/FTl0tl9BGdc
- Simplicity is Complicated http://youtu.be/rFejpH_tAHM
- Stacks of Tokens, A study in interfaces http://youtu.be/sDTGhIqyMjo
- Go 2 Draft Specifications http://youtu.be/RIvL2ONhFBI
- Rob Pike on the move from C to Go in the toolchain http://youtu.be/cF1zJYkBW4A
- Public Static Void http://youtu.be/5kj5ApnhPAE
- Another Go at Language Design http://youtu.be/7VcArS4Wpqk
- The path to Go 1 http://youtu.be/bj9T2c2Xk_s
- Writing Web Apps in Go http://youtu.be/-i0hat7pdpk
- The Go Programming Language and Environment http://www.youtu.be/YXV7sa4oM4I
- . http://github.com/ardanlabs/gotraining/tree/master/reading
- Russ' Accepted Proposals
- FIXME: add github link
- label:Proposal-Accepted author:rsc
- Intro to Go
- . A Tour of Go http://research.swtch.com/gotour
- . Ultimate Go Tour http://tour.ardanlabs.com
- . How Do You Structure Your Go Apps http://youtu.be/oL6JBUk6tj0
- # why is it here? maybe :^/Demo
- . Codewalk: First-Class Functions in Go http://go.dev/doc/codewalk/functions/
- . Codewalk: Generating arbitrary text: a Markov chain algorithm http://go.dev/doc/codewalk/markov/
- Details ("A Tour of Go") first, abstractions ("Go at Google") later.
- Why Go?
- . import from http://go.dev/talks
- What guided the choices that defined Go's identity? How does
- it contrast with choices made by other languages? How to
- address Go's shortcomings properly?
- . Design :/^FAQ/
- . Changes from C :/^FAQ/
- . Go at Google http://go.dev/talks/2012/splash.article
- . Another Go at Language Design
- http://web.stanford.edu/class/ee380/Abstracts/100428-pike-stanford.pdf
- http://youtu.be/7VcArS4Wpqk
- . What We Got Right, What We Got Wrong :/^History/
- . Less is exponentially more http://commandcenter.blogspot.com/2012/06/less-is-exponentially-more.html
- . Why no constructors and destructors: http://github.com/golang/go/issues/36669#issuecomment-576820265
- Challenges:
- . the spec, mm specifically, isn't simple
- . interfaces are nothing new
- Ardan Labs
- . Focus On Being Precise http://ardanlabs.com/blog/2018/02/focus-on-being-precise.html
- . Application Focused API Design http://ardanlabs.com/blog/2016/11/application-focused-api-design.html
- . Avoid Interface Pollution http://ardanlabs.com/blog/2016/10/avoid-interface-pollution.html
- . Reducing Type Hierarchies http://ardanlabs.com/blog/2016/10/reducing-type-hierarchies.html
- . Composition with Go http://ardanlabs.com/blog/2015/09/composition-with-go.html
- . Using Pointers In Go http://ardanlabs.com/blog/2014/12/using-pointers-in-go.html
- . Singleton Design Pattern in Go http://ardanlabs.com/blog/2013/07/singleton-design-pattern-in-go.html
- . Idiomatic Go Tricks http://youtu.be/yeetIgNeIkc
- . When Idioms Become Bottlenecks http://youtu.be/q7s30kFHBdw
- Ardan Labs: Design Philosophy
- . Develop Your Design Philosophy http://ardanlabs.com/blog/2017/01/develop-your-design-philosophy.html
- . Design Philosophy On Logging http://ardanlabs.com/blog/2017/05/design-philosophy-on-logging.html
- . Design Philosophy On Packaging http://ardanlabs.com/blog/2017/02/design-philosophy-on-packaging.html
- . Package Oriented Design http://ardanlabs.com/blog/2017/02/package-oriented-design.html
- . Design Philosophy On Integrity http://ardanlabs.com/blog/2017/02/design-philosophy-on-integrity.html
- . Design Philosophy in Go http://youtu.be/7YcLIbG1ekM
- History
- . 2009: The Go Programming Language Promo http://youtu.be/wwoWei-GAPo
- . 2010: Go: one year ago today http://go.dev/blog/1year
- . 2010: Go Programming http://youtu.be/jgVhBThJdXc
- . 2013: Four years of Go http://go.dev/blog/4years
- . 2013: The path to Go 1 http://youtu.be/bj9T2c2Xk_s
- . 2014: Opening Keynote http://youtu.be/VoS7DsT1rdM
- . 2014: Go from C to Go http://youtu.be/QIE5nV5fDwA
- . 2015: Six years of Go http://go.dev/blog/6years
- . 2015: The Evolution of Go
- http://go.dev/talks/2015/gophercon-goevolution.slide
- http://youtu.be/0ReKdcpNyQg
- . 2015: The move from C to Go in the toolchain http://youtu.be/cF1zJYkBW4A
- . 2015: Keynote http://youtu.be/XvZOdpd_9tc
- . 2016: Seven years of Go http://go.dev/blog/7years
- . 2017: Eight years of Go http://go.dev/blog/8years
- . 2017: The Future of Go http://go.dev/blog/toward-go2 http://youtu.be/0Zbh_vmAKvk
- . 2018: Nine years of Go http://go.dev/blog/9years
- . 2019: The Go Programming Language http://youtu.be/rKnDgT73v8s
- . 2020: Eleven Years of Go http://go.dev/blog/11years
- . 2021: Twelve Years of Go http://go.dev/blog/12years
- . 2021: The Go Programming Language and Environment http://youtu.be/YXV7sa4oM4I
- . 2022: Thirteen Years of Go http://go.dev/blog/13years
- . 2022: Compatibility: How Go Programs Keep Working http://youtu.be/v24wrd3RwGo
- . 2022: How do Go programs keep working? http://youtu.be/moS35OlJBmY
- . 2023: Fourteen Years of Go http://go.dev/blog/14years
- . 2023: Go Changes http://youtu.be/BNmxtp26I5s
- . 2024: What We Got Right, What We Got Wrong
- http://commandcenter.blogspot.com/2024/01/what-we-got-right-what-we-got-wrong.html
- http://youtu.be/yE5Tpp2BSGw
- . 2024: How things get done on the Go Team http://changelog.com/gotime/318
- . 2024: Russ Cox on passing the torch http://changelog.com/gotime/333
- . 2024: Go Turns 15 http://go.dev/blog/15years
- go2
- . 2017: Toward Go 2
- . 2018: Go 2, here we come! http://go.dev/blog/go2-here-we-come
- . 2018: Go 2 Draft Specifications http://youtu.be/RIvL2ONhFBI
- . 2018: Go 2 Drafts Announcement http://go.dev/blog/go2draft http://youtu.be/6wIP3rO6On8
- . 2019: Next steps toward Go 2 http://go.dev/blog/go2-next-steps
- . 2019: On the Path to Go 2 http://youtu.be/kNHo788oO5Y
- . 2023: Backward Compatibility, Go 1.21, and Go 2 http://go.dev/blog/compat
- Assembly
- . Bounds Check Elimination In Go http://ardanlabs.com/blog/2018/04/bounds-check-elimination-in-go.html
- . Go Compiler nil Pointer Checks http://ardanlabs.com/blog/2014/09/go-compiler-nil-pointer-checks.html
- . Macro View of Map Internals In Go http://ardanlabs.com/blog/2013/12/macro-view-of-map-internals-in-go.html
- . Recursion And Tail Calls In Go http://ardanlabs.com/blog/2013/09/recursion-and-tail-calls-in-go_26.html
- . The Design of the Go Assembler http://youtu.be/KINIAgRpkDA
- pointers, stacks, heaps, escape analysis and value/pointer semantics
- . Language Mechanics On Stacks And Pointers
- http://ardanlabs.com/blog/2017/05/language-mechanics-on-stacks-and-pointers.html
- . Language Mechanics On Escape Analysis
- http://ardanlabs.com/blog/2017/05/language-mechanics-on-escape-analysis.html
- . Language Mechanics On Memory Profiling
- http://ardanlabs.com/blog/2017/06/language-mechanics-on-memory-profiling.html
- . Design Philosophy On Data And Semantics
- http://ardanlabs.com/blog/2017/06/design-philosophy-on-data-and-semantics.html
- . For Range Semantics
- http://ardanlabs.com/blog/2017/06/for-range-semantics.html
- . Interface Semantics
- http://ardanlabs.com/blog/2017/07/interface-semantics.html
- . Escape-Analysis Flaws
- http://ardanlabs.com/blog/2018/01/escape-analysis-flaws.html
- Cgo
- . C? Go? Cgo! http://go.dev/blog/cgo
- . Using C Dynamic Libraries In Go Programs
- http://ardanlabs.com/blog/2013/08/using-c-dynamic-libraries-in-go-programs.html
- . Using CGO with Pkg-Config And Custom Dynamic Library Locations
- http://ardanlabs.com/blog/2013/08/using-cgo-with-pkg-config-and-custom.html
- Concurrency
- . Origins of Go Concurrency Style http://youtu.be/-_DKfAn4pFA
- . Concurrency :/^Effective.Go/
- . Concurrency :/^FAQ/
- . Language: Goroutine lifetimes :/^Google.Style.Decisions/
- . Language: Synchronous functions :/^Google.Style.Decisions/
- . Share Memory By Communicating http://go.dev/blog/codelab-share
- . Testing concurrent code with testing/synctest http://go.dev/blog/synctest
- . Codewalk: Share Memory By Communicating http://go.dev/doc/codewalk/sharemem/
- . Principles of designing Go APIs with channels
- http://inconshreveable.com/07-08-2014/principles-of-designing-go-apis-with-channels/
- . Advanced Go Concurrency http://encore.dev/blog/advanced-go-concurrency
- . Mutexes and Semaphores Demystified http://barrgroup.com/blog/mutexes-and-semaphores-demystified
- . Timeouts and Deadlines http://go.dev/wiki/Timeouts
- . LockOSThread http://go.dev/wiki/LockOSThread
- . Use a sync.Mutex or a channel? http://go.dev/wiki/MutexOrChannel
- . Rate Limiting http://go.dev/wiki/RateLimiting
- . Go Patterns: Fanning http://seh.dev/concy0/
- . A Practical Guide to Preventing Deadlocks and Leaks in Go http://youtu.be/3EW1hZ8DVyw
- . Concurrency Trap #2: Incomplete Work
- http://ardanlabs.com/blog/2019/04/concurrency-trap-2-incomplete-work.html
- . Goroutine Leaks - The Abandoned Receivers
- http://ardanlabs.com/blog/2018/12/goroutine-leaks-the-abandoned-receivers.html
- . Goroutine Leaks - The Forgotten Sender
- http://ardanlabs.com/blog/2018/11/goroutine-leaks-the-forgotten-sender.html
- . The Behavior Of Channels
- http://ardanlabs.com/blog/2017/10/the-behavior-of-channels.html
- . The Nature Of Channels In Go
- http://ardanlabs.com/blog/2014/02/the-nature-of-channels-in-go.html
- . Concurrency, Goroutines and GOMAXPROCS
- http://ardanlabs.com/blog/2014/01/concurrency-goroutines-and-gomaxprocs.html
- . My Channel Select Bug http://ardanlabs.com/blog/2013/10/my-channel-select-bug.html
- . Pool Go Routines To Process Task Oriented Work
- http://ardanlabs.com/blog/2013/09/pool-go-routines-to-process-task.html
- . Timer Routines And Graceful Shutdowns In Go
- http://ardanlabs.com/blog/2013/09/timer-routines-and-graceful-shutdowns.html
- #ajmani
- . Go Concurrency Patterns: Timing out, moving on http://go.dev/blog/concurrency-timeouts
- . Go Concurrency Patterns: Pipelines and cancellation http://go.dev/blog/pipelines
- . Advanced Go Concurrency Patterns http://youtu.be/QDDwwePbDtw http://go.dev/talks/2013/advconc.slide
- . Simulating a Real-World System in Go
- http://sourcegraph.com/blog/go/simulating-a-real-world-system-in-go
- http://speakerdeck.com/sajmani/simulating-a-real-world-system-in-go
- Practical Go
- . Channel Axioms http://dave.cheney.net/2014/03/19/channel-axioms
- . Curious Channels http://dave.cheney.net/2013/04/30/curious-channels
- . Never start a goroutine without knowing hot it will stop
- http://dave.cheney.net/2016/12/22/never-start-a-goroutine-without-knowing-how-it-will-stop
- talks
- . Understanding Channels http://youtu.be/KBZlN0izeiY http://speakerdeck.com/kavya719/understanding-channels
- . Concurrency is not parallelism http://go.dev/blog/waza-talk http://go.dev/talks/2012/waza.slide
- . Go Concurrency Patterns http://youtu.be/f6kdp27TYZs http://go.dev/talks/2012/concurrency.slide
- . Rethinking Classical Concurrency Patterns
- http://youtu.be/5zXAHh5tJqQ
- http://drive.google.com/file/d/1nPdvhB0PutEJzdCq5ms6UI58dp50fcAN
- . Asynchronous Networking Patterns http://youtu.be/afSiVelXDTQ
- . Unbound Concurrency in Go http://youtu.be/PAUjYyBfELk
- . Complex Concurrency Patterns with Go http://youtu.be/2HOO5gIgyMg
- . An Actor Model in Go http://youtu.be/yCbon_9yGVs
- . Concurrency Patterns in Go http://youtu.be/rDRa23k70CU
- . Broadcasting Channels http://youtu.be/nG2djhqmSQk
- . Goroutines: The Dark Side of the Runtime http://youtu.be/4CrL3Ygh7S0
- . Tackling Contention: The Monsters Inside the sync.Locker http://youtu.be/KUC5WtbBdFA
- . Deadlocks: The Dark Side of Concurrency http://youtu.be/9j0oQkqzhAE
- . Detecting and Fixing Unbound Concurrency Problems http://youtu.be/gggi4GIvgrg
- Go advanced concurrency patterns
- . Part 1 http://blogtitle.github.io/go-advanced-concurrency-patterns-part-1
- . Part 2 http://blogtitle.github.io/go-advanced-concurrency-patterns-part-2-timers
- . Part 3 http://blogtitle.github.io/go-advanced-concurrency-patterns-part-3-channels
- Ice Cream Makers and Data Races
- . http://dave.cheney.net/2014/06/27/ice-cream-makers-and-data-races
- . http://ardanlabs.com/blog/2014/06/ice-cream-makers-and-data-races-part-ii.html
- Concurrency: Context
- . Common libraries: Contexts :/^Google.Style.Decisions/
- . Cancellation, Context, and Plumbing http://go.dev/talks/2014/gotham-context.slide
- . Go Concurrency Patterns: Context http://go.dev/blog/context
- blogs
- . Context http://peter.bourgon.org/blog/2016/07/11/context.html
- . Why context.Value matters and how to improve it
- http://blog.merovius.de/posts/2017-08-14-why-context-value-matters-and-how-to-improve-it/
- . Context is for cancellation http://dave.cheney.net/2017/01/26/context-is-for-cancelation
- . Context isn’t for cancellation http://dave.cheney.net/2017/08/20/context-isnt-for-cancellation
- . Pitfalls of context values and how to avoid or mitigate them in Go
- http://calhoun.io/pitfalls-of-context-values-and-how-to-avoid-or-mitigate-them/
- . Context should go away for Go 2 http://faiface.github.io/post/context-should-go-away-go2/
- . Providing context to cancellations in Go 1.20 with the new context WithCause API
- http://josephwoodward.co.uk/2023/01/context-cancellation-cause-with-cancel-cause
- talks
- . A Beginner’s Guide to Context http://youtu.be/r4Mlm6qEWRs
- . How to correctly use package context http://youtu.be/-_B5uQ4UGi0
- Demo
- . A web server :/^Effective.Go/
- . Complex command-line interfaces :/^Google.Best.Practices/
- . Writing Web Applications http://go.dev/doc/articles/wiki
- . Code that grows with grace http://vimeo.com/53221560
- . Implementing a bignum calculator with Rob Pike http://youtu.be/PXoG0WX0r_E
- Ardan Labs
- . Visualizing Map Data with Go and Leaflet JS
- http://ardanlabs.com/blog/2023/11/visualizing-map-data-go.html
- . Visualization in Go - Plotting Stock Information http://ardanlabs.com/blog/2022/01/visualizations-in-go.html
- . GIS in Go http://ardanlabs.com/blog/2021/11/gis-in-go.html
- . Extract, Transform, and Load in Go http://ardanlabs.com/blog/2021/09/extract-transform-load-in-go.html
- . Data Science in Go: How Much To Tip
- http://ardanlabs.com/blog/2021/07/go-data-science-how-much-tip.html
- . Using Bitmasks In Go http://ardanlabs.com/blog/2021/04/using-bitmasks-in-go.html
- . Actionable Data With MongoDB and Go
- http://ardanlabs.com/blog/2014/06/actionable-data-with-mongodb-and-go.html
- . Web Form Validation And Localization In Go
- http://ardanlabs.com/blog/2014/03/web-form-validation-and-localization-in.html
- . Running MongoDB Queries Concurrently With Go
- http://ardanlabs.com/blog/2014/02/running-queries-concurrently-against.html
- . Sample Web Application Using Beego and Mgo
- http://ardanlabs.com/blog/2013/12/sample-web-application-using-beego-and.html
- . Using XSLT With Go
- http://ardanlabs.com/blog/2013/11/using-xslt-with-go.html
- . Slices of Slices of Slices in Go
- http://ardanlabs.com/blog/2013/09/slices-of-slices-of-slices-in-go.html
- . Running Go Programs as a Background Process
- http://ardanlabs.com/blog/2013/06/running-go-programs-as-background.html
- Distributed Computing
- . Coordinating data changes in distributed systems http://youtu.be/osSkjwFgz5g
- . Lost in Transaction http://youtu.be/iQnbYMmDct4
- . Build your own distributed system using Go http://youtu.be/8XbxQ1Epi5w
- . Reliability Nirvana http://youtu.be/NvmGgaWxx_U
- . Go, for Distributed Systems http://go.dev/talks/2013/distsys.slide
- Errors
- . Effective Go: Errors
- . Google Style Decisions: Errors
- . Google Style Decisions: Don’t panic
- Google Best Practices: Error handling
- . Error structure
- . Adding information to errors
- . Placement of %w in errors
- . Logging errors
- . Program initialization
- . Program checks and panics
- . When to panic
- . Error handling and Go http://go.dev/blog/error-handling-and-go
- . Errors are values http://go.dev/blog/errors-are-values
- . Go Wiki: Errors http://go.dev/wiki/Errors
- . Defer, Panic, and Recover http://go.dev/blog/defer-panic-and-recover
- . Go Wiki: PanicAndRecover http://go.dev/wiki/PanicAndRecover
- . Error handling in Upspin http://commandcenter.blogspot.com/2017/12/error-handling-in-upspin.html
- . Working with Errors in Go 1.13 http://go.dev/blog/go1.13-errors
- . Understanding Defer, Panic and Recover
- http://ardanlabs.com/blog/2013/06/understanding-defer-panic-and-recover.html
- . Handling Go Errors http://youtu.be/4WIhhzTTd0Y
- . Working with Errors http://youtu.be/IKoSsJFdRtI
- . An Open Letter To The Go Team About Try
- http://ardanlabs.com/blog/2019/07/an-open-letter-to-the-go-team-about-try.html
- Dave Cheney
- . Don’t just check errors, handle them gracefully
- http://dave.cheney.net/2016/04/27/dont-just-check-errors-handle-them-gracefully
- . Stack traces and the errors package
- http://dave.cheney.net/2016/06/12/stack-traces-and-the-errors-package
- . Inspecting errors
- http://dave.cheney.net/2014/12/24/inspecting-errors
- . Constant errors
- http://dave.cheney.net/2016/04/07/constant-errors
- . Eliminate error handling by eliminating errors
- http://dave.cheney.net/2019/01/27/eliminate-error-handling-by-eliminating-errors
- Error Handling In Go
- . http://ardanlabs.com/blog/2014/10/error-handling-in-go-part-i.html
- . http://ardanlabs.com/blog/2014/11/error-handling-in-go-part-ii.html
- GC
- . A Guide to the Go Garbage Collector http://go.dev/doc/gc-guide
- . Go GC: Prioritizing low latency and simplicity http://go.dev/blog/go15gc
- . Go GC: Solving the Latency Problem http://youtu.be/aiv1JOfMjm0 http://go.dev/talks/2015/go-gc.pdf
- . Getting to Go: The Journey of Go’s Garbage Collector http://go.dev/blog/ismmkeynote
- . Control Theory and Concurrent Garbage Collection http://youtu.be/We-8RSk4eZA
- Garbage Collection In Go
- . Semantics http://ardanlabs.com/blog/2018/12/garbage-collection-in-go-part1-semantics.html
- . GC Traces http://ardanlabs.com/blog/2019/05/garbage-collection-in-go-part2-gctraces.html
- . GC Pacing http://ardanlabs.com/blog/2019/07/garbage-collection-in-go-part3-gcpacing.html
- Generics
- . Type Parameters :/^FAQ/
- . Language: Generics :/^Google.Style.Decisions/
- . Getting Started http://go.dev/doc/tutorial/generics
- . Deconstructing Type Parameters http://go.dev/blog/deconstructing-type-parameters
- . Robust generic functions on slices http://go.dev/blog/generic-slice-functions
- . An Introduction to Generics http://go.dev/blog/intro-generics http://youtu.be/Pa_e9EeCdy8
- . When to Use Generics http://go.dev/blog/when-generics http://youtu.be/nr8EpUO9jhw
- . Generic interfaces http://go.dev/blog/generic-interfaces
- . Everything You Always Wanted to Know about Type Inference
- http://go.dev/blog/type-inference
- http://youtu.be/2putv2jOqdg
- . All your comparable types http://go.dev/blog/comparable
- . Generics Unconstrained! http://youtu.be/eU-w2psAvdA
- Ardan Labs
- . Basic Syntax http://ardanlabs.com/blog/2020/07/generics-01-basic-syntax.html
- . Underlying Types http://ardanlabs.com/blog/2020/08/generics-02-underlying-types.html
- . Struct Types and Data Semantics
- http://ardanlabs.com/blog/2020/09/generics-03-struct-types-and-data-semantics.html
- . Generics vs. Interfaces http://youtu.be/iWP0ANQ4m7g
- HTTP
- . Routing Enhancements for Go 1.22 http://go.dev/blog/routing-enhancements
- . HTTP/2 Server Push http://go.dev/blog/h2push
- . Introducing HTTP Tracing http://go.dev/blog/http-tracing
- . Custom Handlers and Avoiding Globals in Go Web Applications
- http://blog.questionable.services/article/custom-handlers-avoiding-globals/
- . http.Handler and Error Handling in Go
- http://blog.questionable.services/article/http-handler-error-handling-revisited/
- . Making and Using HTTP Middleware http://alexedwards.net/blog/making-and-using-middleware
- . Writing HTTP Middleware in Go http://justinas.org/writing-http-middleware-in-go
- . Calculating Download MD5 Hash http://ardanlabs.com/blog/2023/03/calculating-download-md5-in-go.html
- . Writing an HTTP handler function in Go http://youtu.be/gkqhAa3OIXI
- . How I Write HTTP Web Services after Eight Years http://youtu.be/rWBSMsLG8po
- . How I Write HTTP Clients after (almost) 7 Years http://youtu.be/7viRho80PY4
- Images
- .The Go image package http://go.dev/blog/go-image-package
- . The Go image/draw package http://go.dev/blog/go-imagedraw-package
- Interface
- . Interfaces and other types :/^Effective.Go/
- . Google Style Decisions: Language: Interfaces
- . JSON-RPC: a tale of interfaces http://go.dev/blog/json-rpc
- . A GIF decoder: an exercise in Go interfaces http://go.dev/blog/gif-decoder
- . Go Data Structures: Interfaces http://research.swtch.com/interfaces
- . Go Wiki: MethodSets http://go.dev/wiki/MethodSets
- . Interface Values Are Valueless http://ardanlabs.com/blog/2018/03/interface-values-are-valueless.html
- . Copying Interface Values In Go http://ardanlabs.com/blog/2016/05/copying-interface-values-in-go.html
- . Stacks of Tokens, A study in interfaces http://youtu.be/sDTGhIqyMjo
- Interfaces 101
- . Implementing Generics with Interfaces http://youtu.be/34ZmIfWOb0U
- . Heap Escape http://youtu.be/HEfAFpdILpA
- . Error Handling With Go http://youtu.be/E7m39uouya0
- . Go's Logging Interface http://youtu.be/6anm5i6UTq4
- . Determine LOC with io.Writer http://youtu.be/72TYNqi5VdM
- . Interface Type Assertion http://youtu.be/cySYwKF_v_w
- . Interface Design Considerations http://youtu.be/I4uBfflqbFY
- . Testing with a Mock Interface http://youtu.be/2tgr46mlMlA
- . Parsing Command Flags http://youtu.be/aHVwZ-WejeI
- . Extensible API Handlers http://youtu.be/RLI3RMwc-ps
- JSON
- . JSON and Go http://go.dev/blog/json
- . JSON, Interfaces, and go generate http://youtu.be/YgnD27GFcyA http://go.dev/talks/2015/json.slide
- . Decode JSON Documents In Go http://ardanlabs.com/blog/2014/01/decode-json-documents-in-go.html
- . The Future of JSON in Go http://youtu.be/avilmOcHKHE
- JSON for Engineers
- . Data Integrity with JSON Serialization http://youtu.be/Ppt_x-gQ3lI
- . Exploring JSON Encoding and Data Handling in Go http://youtu.be/NLglY1ya10c
- . Managing JSON Field Tags and Value Handling in Go http://youtu.be/b1dQu2khW-0
- . JSON Handling and Type Management with Large Datasets in Go http://youtu.be/ZF60bioxTK4
- . Scalable JSON Streaming with HTTP and Go http://youtu.be/-lcH3qrkh_U
- JSON - The Fine Print
- . http://ardanlabs.com/blog/2024/10/json-the-fine-print-part-1.html
- . Emitting JSON http://ardanlabs.com/blog/2024/10/json-the-fine-print-part-2.html
- . Zero vs Missing Values http://ardanlabs.com/blog/2025/05/json-the-fine-print-part-3.html
- Language
- :/^Effective.Go/
- . Semicolons
- . Control structures
- . Functions
- . Initialization
- . The blank identifier
- . Embedding
- :/^FAQ/
- . Types
- . Control Flow
- :/^Google.Style.Decisions/
- . Language: Literal formatting
- . Language: Nil slices
- . Language: Function formatting
- . Language: Conditionals and loops
- . Language: switch and break
- . Language: Type aliases
- . Language: Use %q
- . Language: Use any
- :/^Google.Best.Practices/
- . Variable declarations
- . Function argument lists
- . Go's Declaration Syntax http://go.dev/blog/declaration-syntax
- . Goodbye core types - Hello Go as we know and love it! http://go.dev/blog/coretypes
- . Constants http://go.dev/blog/constants
- . What's in an (Alias) Name? http://go.dev/blog/alias-names
- . Fixing For Loops in Go 1.22 http://go.dev/blog/loopvar-preview
- . Go maps in action http://go.dev/blog/maps
- . Package names http://go.dev/blog/package-names
- Ardan Labs
- . For Loops and More in Go http://ardanlabs.com/blog/2024/03/for-loops-and-more-in-go.html
- . Implementing Enumerations In Go
- http://ardanlabs.com/blog/2023/09/implementing-enumerations-in-golang.html
- . Pitfalls With Closures In Go http://ardanlabs.com/blog/2014/06/pitfalls-with-closures-in-go.html
- . Methods, Interfaces and Embedded Types in Go
- http://ardanlabs.com/blog/2014/05/methods-interfaces-and-embedded-types.html
- . Introduction To Numeric Constants In Go
- http://ardanlabs.com/blog/2014/04/introduction-to-numeric-constants-in-go.html
- . Exported/Unexported Identifiers In Go
- http://ardanlabs.com/blog/2014/03/exportedunexported-identifiers-in-go.html
- . Three-Index Slices in Go 1.2
- http://ardanlabs.com/blog/2013/12/three-index-slices-in-go-12.html
- . Functions and Naked Returns In Go
- http://ardanlabs.com/blog/2013/10/functions-and-naked-returns-in-go.html
- . Gustavo's IEEE-754 Brain Teaser
- http://ardanlabs.com/blog/2013/08/gustavos-ieee-754-brain-teaser.html
- . Understanding Type in Go
- http://ardanlabs.com/blog/2013/07/understanding-type-in-go.html
- Log
- . Structured Logging with slog http://go.dev/blog/slog
- . Using The Log Package In Go http://ardanlabs.com/blog/2013/11/using-log-package-in-go.html
- . Structured Logging for the Standard Library http://youtu.be/rJfvv_c9mYU
- . Let’s talk about logging http://dave.cheney.net/2015/11/05/lets-talk-about-logging
- Memory
- . Data :/^Effective.Go/
- . Pointers and Allocation :/^FAQ/
- . Language: Copying :/Google.Style.Decisions/
- . Language: Pass values :/Google.Style.Decisions/
- . Language: Receiver type :/Google.Style.Decisions/
- Memory Models http://research.swtch.com/mm
- . Hardware Memory Models
- . Programming Language Memory Models
- . Updating the Go Memory Model
- . The Go Memory Model http://go.dev/ref/mem
- . Faster Go maps with Swiss Tables http://go.dev/blog/swisstable http://go.dev/blog/swisstable
- . Understanding Memory Allocation in Go http://youtu.be/zjoieOpy5hE
- . Understanding Go’s Memory Allocator http://youtu.be/3CR4UNMK_Is
- . Memory Management in Go http://youtu.be/SKenR18NM04
- . Go Wiki: InterfaceSlice http://go.dev/wiki/InterfaceSlice
- Modules
- http://research.swtch.com/vgo
- . Go += Package Versioning
- . A Tour of Versioned Go (vgo)
- . Semantic Import Versioning
- . Minimal Version Selection
- . Reproducible, Verifiable, Verified Builds
- . Defining Go Modules
- . Versioned Go Commands
- . The vgo proposal is accepted. Now what?
- . What is Software Engineering?
- . Developing and publishing modules http://go.dev/doc/modules/developing
- . Module release and versioning workflow http://go.dev/doc/modules/release-workflow
- . Managing module source http://go.dev/doc/modules/managing-source
- . Organizing a Go module http://go.dev/doc/modules/layout
- . Developing a major version update http://go.dev/doc/modules/major-version
- . Publishing a module http://go.dev/doc/modules/publishing
- . Module version numbering http://go.dev/doc/modules/version-numbers
- . Using Go Modules http://go.dev/blog/using-go-modules
- . Migrating to Go Modules http://go.dev/blog/migrating-to-go-modules
- . Publishing Go Modules http://go.dev/blog/publishing-go-modules
- . Go Modules: v2 and Beyond http://go.dev/blog/v2-go-modules
- . Keeping Your Modules Compatible http://go.dev/blog/module-compatibility
- . Opening keynote: Go with Versions http://youtu.be/F8nrpe0XWRg
- . Dependencies and the future of Go http://changelog.com/gotime/77
- Ardan Labs
- . Why And What
- http://ardanlabs.com/blog/2019/10/modules-01-why-and-what.html
- . Projects, Dependencies and Gopls
- http://ardanlabs.com/blog/2019/12/modules-02-projects-dependencies-gopls.html
- . Minimal Version Selection
- http://ardanlabs.com/blog/2019/12/modules-03-minimal-version-selection.html
- . Mirrors, Checksums and Athens
- http://ardanlabs.com/blog/2020/02/modules-04-mirros-checksums-athens.html
- . Gopls Improvements
- http://ardanlabs.com/blog/2020/04/modules-05-gopls-improvements.html
- . Vendoring
- http://ardanlabs.com/blog/2020/04/modules-06-vendoring.html
- Networking
- . expvar (<go doc -all expvar)
- . Building a net.Conn type from the ground up http://youtu.be/H7b8GGJxpMk
- . Socket to Me: Where do Sockets Live in Go?
- http://youtu.be/pGR3r0UhoS8
- http://sourcegraph.com/blog/go/gophercon-2019-socket-to-me-where-do-sockets-live-in-go
- OOP
- . Methods :/^Effective.Go/
- . Object Oriented Programming in Go
- http://ardanlabs.com/blog/2013/07/object-oriented-programming-in-go.html
- . How to Break OOP Muscle http://youtu.be/qeTzjeuq3cw
- Object Oriented Programming Mechanics
- http://youtu.be/gRpUfjTwSOo
- Methods http://play.golang.org/p/hfRkC6nKag
- Interfaces http://play.golang.org/p/F1UyKlTh3k
- Extending Types http://play.golang.org/p/JJ811lBwoz
- Overriding Inner Types http://play.golang.org/p/-xQFBv9_82
- Performance
- . Performance :/^FAQ/
- . Going Infinite: Handling 1 Million Websocket Connections http://youtu.be/YiCCD5DPry8
- . Death by 3,000 Timers: Streaming Video-on-Demand for Cable TV http://youtu.be/h0s8CWpIKdg
- Q&A
- . 2012: Meet the Go Team http://youtu.be/sln-gJaURzk
- . 2013: Fireside Chat with the Go Team http://youtu.be/p9VUCp98ay4
- . 2014: Inside the Gophers Studio http://youtu.be/u-kkf76TDHE
- RPC
- . Gobs of data http://go.dev/blog/gob
- . Go Protobuf: The new Opaque API http://go.dev/blog/protobuf-opaque
- . net/rpc (<go doc -all net/rpc)
- . gRPC Go http://youtu.be/sZx3oZt7LVg http://go.dev/talks/2015/gotham-grpc.slide
- Rangefunc
- . Range Over Function Types http://go.dev/blog/range-functions
- . Rangefunc Experiment http://go.dev/wiki/RangefuncExperiment
- . Iterators in Go http://bitfieldconsulting.com/posts/iterators
- . Range-Over Functions in Go http://ardanlabs.com/blog/2024/04/range-over-functions-in-go.html
- . Coroutines for Go http://research.swtch.com/coro
- . spec: add range over int, range over func http://github.com/golang/go/issues/61405
- Reflection
- . The Laws of Reflection http://go.dev/blog/laws-of-reflection
- Runtime
- . Controlling the go runtime http://youtu.be/us9hfJqncV8
- Security
- . Traversal-resistant file APIs http://go.dev/blog/osroot
- . Open Source Supply Chain Security at Google http://research.swtch.com/acmscored
- . Secure Coding in Go: Avoiding Common Vulnerabilities http://youtu.be/com5l5DKvqQ
- . Command PATH security in Go http://go.dev/blog/path-security
- Scheduler
- . Implementing language with lightweight concurrency http://youtu.be/-K11rY57K7k
- . The Scheduler Saga http://youtu.be/YHRO5WQGh0k http://speakerdeck.com/kavya719/the-scheduler-saga
- . Queues, Fairness, and the Go Scheduler http://youtu.be/wQpC99Xu1U4
- . Goroutines: Spinning, Balancing, or Avoiding http://youtu.be/yo-CkroaQhs
- Slice
- . Go Slices: usage and internals http://go.dev/blog/slices-intro
- . Arrays, slices (and strings): The mechanics of 'append' http://go.dev/blog/slices
- Ardan Labs
- . Understanding Slices in Go Programming
- http://ardanlabs.com/blog/2013/08/understanding-slices-in-go-programming.html
- . Collections Of Unknown Length in Go
- http://ardanlabs.com/blog/2013/08/collections-of-unknown-length-in-go.html
- . Iterating Over Slices In Go http://ardanlabs.com/blog/2013/09/iterating-over-slices-in-go.html
- Stdlib
- :/^Google.Style.Decisions/
- . Common libraries: Flags
- . Common libraries: Logging
- . Common libraries: crypto/rand
- . io/fs draft design http://youtu.be/yx7lmuwUNv8
- . Advanced Patterns with io.ReadWriter http://youtu.be/kTAsciVuZLQ
- . Automatic cipher suite ordering in crypto/tls http://go.dev/blog/tls-cipher-suites
- . Evolving the Go Standard Library with math/rand/v2 http://go.dev/blog/randv2
- . Secure Randomness in Go 1.22 http://go.dev/blog/chacha8rand
- . Language and Locale Matching in Go http://go.dev/blog/matchlang
- . Using Time, Timezones and Location in Go
- http://ardanlabs.com/blog/2013/08/using-time-timezones-and-location-in-go.html
- . Understanding Go's Time Format http://youtu.be/sSxvyGKSJ5U
- . Reading XML Documents in Go http://ardanlabs.com/blog/2013/06/reading-xml-documents-in-go.html
- . Send an email in Go with smtp.SendMail
- http://ardanlabs.com/blog/2013/06/send-email-in-go-with-smtpsendmail.html
- . Go's time.Duration Type Unravelled http://ardanlabs.com/blog/2013/06/gos-duration-type-unravelled.html
- . From unique to cleanups and weak: new low-level tools for efficiency http://go.dev/blog/cleanups-and-weak
- . New unique package http://go.dev/blog/unique
- Slices Package
- . Contains, Delete, and Equal http://ardanlabs.com/blog/2023/09/golang-slices-contains-delete-equal.html
- . Compare http://ardanlabs.com/blog/2023/08/golang-slices-compare.html
- . Clip, Clone, and Compact http://ardanlabs.com/blog/2023/08/golang-slices-clip-clone-compact.html
- . Binary Search http://ardanlabs.com/blog/2023/08/golang-slices-binary-search.html
- String
- . Google Best Practices: String concatenation
- . Strings, bytes, runes and characters in Go http://go.dev/blog/strings
- . Go Wiki: GoStrings http://go.dev/wiki/GoStrings
- . String Matching http://blog.gopheracademy.com/advent-2014/string-matching/
- SQL
- . Tutorial: Accessing a relational database http://go.dev/doc/tutorial/database-access
- . Accessing relational databases http://go.dev/doc/database/
- . Opening a database handle http://go.dev/doc/database/open-handle
- . Executing SQL statements that don't return data http://go.dev/doc/database/change-data
- . Querying for data http://go.dev/doc/database/querying
- . Using prepared statements http://go.dev/doc/database/prepared-statements
- . Executing transactions http://go.dev/doc/database/execute-transactions
- . Canceling in-progress operations http://go.dev/doc/database/cancel-operations
- . Managing connections http://go.dev/doc/database/manage-connections
- . Avoiding SQL injection risk http://go.dev/doc/database/sql-injection
- Testing
- :/^Google.Style.Decisions/
- . Useful test failures
- . Test structure
- :/^Google.Best.Practices/
- . Leave testing to the Test function
- . Designing extensible validation APIs
- . Use real transports
- . t.Error vs. t.Fatal
- . Error handling in test helpers
- . Don’t call t.Fatal from separate goroutines
- . Use field names in struct literals
- . Keep setup code scoped to specific tests
- . More predictable benchmarking with testing.B.Loop http://go.dev/blog/testing-b-loop
- . Go Wiki: TableDrivenTests http://go.dev/wiki/TableDrivenTests
- . Using Subtests and Sub-benchmarks http://go.dev/blog/subtests
- . Testable Examples in Go http://go.dev/blog/examples
- . Testing Techniques http://youtu.be/ndmB0bj7eyw http://go.dev/talks/2014/testing.slide
- . Go Testing by Example http://research.swtch.com/testing http://youtu.be/X4rxi9jStLo
- . Table driven tests in Go http://youtu.be/SuImJLqx3wU
- . Advanced Testing with Go http://youtu.be/8hQG7QlcLBk
- . Test Go Service Integration Using Contracts http://youtu.be/9suYz4mgKOU
- . A Journey through Integration Testing with Go http://youtu.be/o_B4HFfeKEs
- . Advanced Testing Concepts http://youtu.be/Iu4nqoCzlRE
- . Advanced Testing Techniques http://youtu.be/_NKQX-TdNMc
- . Acceptance Tests, BDD & Go http://youtu.be/ZMWJCk_0WrY
- . How not to write a test in Go http://youtu.be/AcY_HID7mxY
- . Rethinking How We Test Our Async Architecture http://youtu.be/xa_lLAucKKg
- Integration Testing in Go
- . Executing Tests with Docker
- http://ardanlabs.com/blog/2019/03/integration-testing-in-go-executing-tests-with-docker.html
- . Set-up and Writing Tests
- http://ardanlabs.com/blog/2019/10/integration-testing-in-go-set-up-and-writing-tests.html
- Telemetry
- http://research.swtch.com/telemetry
- . Transparent Telemetry for Open-Source Projects
- . The Design of Transparent Telemetry
- . Use Cases for Transparent Telemetry
- . Opting In to Transparent Telemetry
- Tools
- . Finding unreachable functions with deadcode http://go.dev/blog/deadcode
- . go:build design draft http://youtu.be/AgR_mdC4Rs4
- . //go:embed draft design http://youtu.be/rmS-oWcBZaI
- . Go docs http://go.dev/talks/2012/go-docs.slide
- . Gophers with Hammers http://go.dev/talks/2014/hammers.slide
- . Go Dynamic Tools http://youtu.be/a9xrxRsIbSU http://go.dev/talks/2015/dynamic-tools.slide
- . About the go command http://go.dev/doc/articles/go_command
- . Go Doc Comments http://go.dev/doc/comment
- . Diagnostics http://go.dev/doc/diagnostics
- . Go Wiki: GcToolchainTricks http://go.dev/wiki/GcToolchainTricks
- . Go tooling essentials http://rakyll.org/go-tool-flags/
- . Cross Compile Your Go Programs http://ardanlabs.com/blog/2013/10/cross-compile-your-go-programs.html
- . Writing testable examples in Go http://youtu.be/-p79vJF_k8c
- . Codebase Refactoring (with help from Go) http://youtu.be/h6Cw9iCDVcU
- . Dynamically Instrumenting Go Programs http://youtu.be/de9cVAx6REA
- . Optimizing Go Code without a Blindfold http://youtu.be/oE_vm7KeV_E
- . Tracking Inter-process Dependencies http://youtu.be/Um3l_pr3dzw
- Tools: code generation
- . The cover story http://go.dev/blog/cover
- . Generating code http://go.dev/blog/generate
- . Becoming the Metaprogrammer http://youtu.be/RpmYXh0ppRo
- . Inception: Go programs that generate Go code http://youtu.be/Zl50bk6VRQE
- . Write Less (Code), Generate More http://youtu.be/xcpboZZy-64
- Tools: debugging
- . Debugging Go code (a status report) http://go.dev/blog/debug-status
- . Debugging Go Code with GDB http://go.dev/doc/gdb
- . Delve into Go http://youtu.be/InG72scKPd4
- . Deterministically Debugging Go Programs http://youtu.be/S05f-lgY5S0
- . Be Smug, Debug http://youtu.be/ISYdvmg2D_k
- Tools: fuzzing
- . Go Fuzzing http://go.dev/doc/security/fuzz/
- . Getting started with fuzzing http://go.dev/doc/tutorial/fuzz
- . Fuzz Testing Made Easy http://youtu.be/7KWPiRq3ZYI
- Tools: pgo
- . Profile-guided optimization preview http://go.dev/blog/pgo-preview
- . Profile-guided optimization in Go 1.21 http://go.dev/blog/pgo
- . Profile-guided optimization http://go.dev/doc/pgo
- Tools: profiling
- . Profiling Go Programs http://go.dev/blog/pprof
- . Kubernetes Memory Limits and Go http://ardanlabs.com/blog/2024/02/kubernetes-memory-limits-go.html
- . Kubernetes CPU Limits and Go http://ardanlabs.com/blog/2024/02/kubernetes-cpu-limits-go.html
- . Getting Friendly With CPU Caches http://ardanlabs.com/blog/2023/07/getting-friendly-with-cpu-caches.html
- . Two Go Programs, Three Different Profiling Techniques http://youtu.be/nok0aYiGiYA
- . Go Profiling and Observability from Scratch http://youtu.be/7hg4T2Qqowk
- . Collect First, Ask Questions Later http://youtu.be/srprZ2NgRgk
- . Performance in a High-throughput SQL Database http://youtu.be/IiPT6g2F1Kk
- . Seven ways to profile Go applications http://youtu.be/2h_NFBFrciI
- . You, Latency, and Profiling http://youtu.be/Lxt8Vqn4JiQ
- Tools: race detection
- . Introducing the Go Race Detector http://go.dev/blog/race-detector
- . Data Race Detector http://go.dev/doc/articles/race_detector
- . Sneaky race conditions and granular locks http://blogtitle.github.io/sneaky-race-conditions-and-granular-locks/
- . Detecting Race Conditions With Go http://ardanlabs.com/blog/2013/09/detecting-race-conditions-with-go.html
- Tools: security
- . govulncheck http://go.dev/doc/tutorial/govulncheck
- . Vulnerability Management for Go http://go.dev/blog/vuln http://youtu.be/nJm2GP6kMJo
- . Understanding Supply Chain Threats with Static Analysis http://youtu.be/8ranre-agv8
- Tools: tracing
- . An Introduction to “go tool trace” http://youtu.be/V74JnrGTwKA
- . Trace http://pkg.go.dev/cmd/trace
- . More powerful Go execution traces http://go.dev/blog/execution-traces-2024
- . Scheduler Tracing In Go http://ardanlabs.com/blog/2015/02/scheduler-tracing-in-go.html
- . Stack Traces In Go http://ardanlabs.com/blog/2015/01/stack-traces-in-go.html
- . Tracing Go Programs with eBPF http://youtu.be/OxLmd7szevI
- WebAssemply
- . Extensible Wasm Applications with Go http://go.dev/blog/wasmexport
- . BONUS – Go and WebAssembly http://changelog.com/gotime/bonus-77
- WebSocket
- . WebSockets in Go http://youtu.be/b6hM0RFNnHw
- talks/2012
- . 10 things you (probably) don’t know about Go http://go.dev/talks/2012/10things.slide
- . Go: code that grows with grace http://go.dev/talks/2012/chat.slide
- talks/2013
- . Twelve Go Best Practices http://youtu.be/8D3Vmm1BGoY http://go.dev/talks/2013/bestpractices.slide
- talks/2014
- . When in Go, Do as Gophers Do http://go.dev/talks/2014/readability.slide
- . The Research Problems of Implementing Go
- http://go.dev/talks/2014/research.slide
- http://go.dev/talks/2014/research2.slide
- Effective Go
- http://go.dev/doc/effective_go
- . Introduction
- . Formatting
- . Commentary
- . Names
- . Semicolons :/^Language/
- . Control structures :/^Language/
- . Functions :/^Language/
- . Data :/^Memory/
- . Initialization :/^Language/
- . Methods :/^OOP/
- . Interfaces and other types :/^Interface/
- . The blank identifier :/^Language/
- . Embedding :/^Language/
- . Concurrency :/^Concurrency/
- . Errors :/^Errors/
- . A web server :/^Demo/
- FAQ
- http://go.dev/doc/faq
- . Origins
- . Usage
- . Design :/^Why.Go/
- . Types :/^Language/
- . Values :/^Language/
- . Writing Code
- . Pointers and Allocation :/^Memory/
- . Concurrency :/^Concurrency/
- . Functions and Methods
- . Control Flow :/^Language/
- . Type Parameters :/^Generics/
- . Packages and Testing
- . Implementation
- . Performance :/^Performance/
- . Changes from C :/^Why.Go/
- Google Style Guide
- http://google.github.io/styleguide/go/guide
- . Style principles: Clarity
- . Style principles: Simplicity
- . Style principles: Concision
- . Style principles: Maintainability
- . Style principles: Consistency
- . Core guidelines
- References
- . Code Health: IdentifierNamingPostForWorldWideWebBlog
- http://testing.googleblog.com/2017/10/code-health-identifiernamingpostforworl.html
- . Testing State vs. Testing Interactions
- http://testing.googleblog.com/2013/03/testing-on-toilet-testing-state-vs.html
- . Effective Testing http://testing.googleblog.com/2014/05/testing-on-toilet-effective-testing.html
- . Risk-Driven Testing http://testing.googleblog.com/2014/05/testing-on-toilet-risk-driven-testing.html
- . Change-Detector Tests Considered Harmful
- http://testing.googleblog.com/2015/01/testing-on-toilet-change-detector-tests.html
- Google Style Decisions
- http://google.github.io/styleguide/go/decisions
- . Naming
- . Commentary
- . Imports
- . Errors :/^Errors/
- . Language: Literal formatting :/^Language/
- . Language: Nil slices :/^Language/
- . Language: Function formatting :/^Language/
- . Language: Conditionals and loops :/^Language/
- . Language: Copying :/^Memory/
- . Language: Don’t panic :/^Errors/
- . Language: Goroutine lifetimes :/^Concurrency/
- . Language: Interfaces :/^Interface/
- . Language: Generics :/^Generics/
- . Language: Pass values :/^Memory/
- . Language: Receiver type :/^Memory/
- . Language: switch and break :/^Language/
- . Language: Synchronous functions :/^Concurrency/
- . Language: Type aliases :/^Language/
- . Language: Use %q :/^Language/
- . Language: Use any :/^Language/
- . Common libraries: Flags :/^Stdlib/
- . Common libraries: Logging :/^Stdlib/
- . Common libraries: Contexts :/^Concurrency:.Context/
- . Common libraries: crypto/rand :/^Stdlib/
- . Useful test failures :/^Testing/
- . Test structure :/^Testing/
- . Non-decisions
- Google Best Practices
- http://google.github.io/styleguide/go/best-practices
- . Naming: Function and method names
- . Naming: Test double packages and types
- . Naming: Shadowing
- . Naming: Util packages
- . Package size
- . Imports
- . Error handling :/^Errors/
- . Documentation: Conventions
- . Documentation: Preview
- . Documentation: Godoc formatting
- . Documentation: Signal boosting
- . Variable declarations :/^Language/
- . Function argument lists :/^Language/
- . Complex command-line interfaces :/^Demo/
- . Tests :/^Testing/
- . String concatenation :/^String/
- . Global state
- References
- . Self-referential functions and the design of options
- http://commandcenter.blogspot.com/2014/01/self-referential-functions-and-design.html
- . Functional options for friendly APIs
- http://youtu.be/24lFtGHWxAQ
- http://dave.cheney.net/2014/10/17/functional-options-for-friendly-apis
Advertisement
Add Comment
Please, Sign In to add comment