gitextract_n1nyvkdi/ ├── .editorconfig ├── .github/ │ ├── FUNDING.yml │ └── workflows/ │ └── go.yml ├── .gitignore ├── .mdlrc ├── LICENSE.md ├── README.md ├── SUMMARY.md ├── anti-patterns.md ├── app-intro.md ├── arrays/ │ ├── v1/ │ │ ├── sum.go │ │ └── sum_test.go │ ├── v2/ │ │ ├── sum.go │ │ └── sum_test.go │ ├── v3/ │ │ ├── sum.go │ │ └── sum_test.go │ ├── v4/ │ │ ├── sum.go │ │ └── sum_test.go │ ├── v5/ │ │ ├── sum.go │ │ └── sum_test.go │ ├── v6/ │ │ ├── sum.go │ │ └── sum_test.go │ ├── v7/ │ │ ├── sum.go │ │ └── sum_test.go │ └── v8/ │ ├── assert.go │ ├── bad_bank.go │ ├── bad_bank_test.go │ ├── collection_fun.go │ ├── sum.go │ └── sum_test.go ├── arrays-and-slices.md ├── blogrenderer/ │ ├── post.go │ ├── renderer.go │ ├── renderer_test.TestRender.it_converts_a_single_post_into_HTML.approved.txt │ ├── renderer_test.TestRender.it_renders_an_index_of_posts.approved.txt │ ├── renderer_test.go │ └── templates/ │ ├── blog.gohtml │ ├── bottom.gohtml │ ├── index.gohtml │ └── top.gohtml ├── book.json ├── build.books.sh ├── build.sh ├── command-line/ │ ├── v1/ │ │ ├── cmd/ │ │ │ ├── cli/ │ │ │ │ └── main.go │ │ │ └── webserver/ │ │ │ └── main.go │ │ ├── file_system_store.go │ │ ├── file_system_store_test.go │ │ ├── league.go │ │ ├── server.go │ │ ├── server_integration_test.go │ │ ├── server_test.go │ │ ├── tape.go │ │ └── tape_test.go │ ├── v2/ │ │ ├── CLI.go │ │ ├── CLI_test.go │ │ ├── cmd/ │ │ │ ├── cli/ │ │ │ │ └── main.go │ │ │ └── webserver/ │ │ │ └── main.go │ │ ├── file_system_store.go │ │ ├── file_system_store_test.go │ │ ├── league.go │ │ ├── server.go │ │ ├── server_integration_test.go │ │ ├── server_test.go │ │ ├── tape.go │ │ └── tape_test.go │ └── v3/ │ ├── CLI.go │ ├── CLI_test.go │ ├── cmd/ │ │ ├── cli/ │ │ │ └── main.go │ │ └── webserver/ │ │ └── main.go │ ├── file_system_store.go │ ├── file_system_store_test.go │ ├── league.go │ ├── server.go │ ├── server_integration_test.go │ ├── server_test.go │ ├── tape.go │ ├── tape_test.go │ └── testing.go ├── command-line.md ├── concurrency/ │ ├── v1/ │ │ ├── check_website.go │ │ ├── check_websites.go │ │ ├── check_websites_benchmark_test.go │ │ └── check_websites_test.go │ ├── v2/ │ │ ├── check_website.go │ │ ├── check_websites.go │ │ ├── check_websites_benchmark_test.go │ │ └── check_websites_test.go │ └── v3/ │ ├── check_website.go │ ├── check_websites.go │ ├── check_websites_benchmark_test.go │ └── check_websites_test.go ├── concurrency.md ├── context/ │ ├── v1/ │ │ ├── context.go │ │ └── context_test.go │ ├── v2/ │ │ ├── context.go │ │ ├── context_test.go │ │ └── testdoubles.go │ └── v3/ │ ├── context.go │ ├── context_test.go │ └── testdoubles.go ├── context-aware-reader.md ├── context.md ├── contributing.md ├── dependency-injection.md ├── di/ │ ├── v1/ │ │ ├── di.go │ │ └── di_test.go │ └── v2/ │ ├── di.go │ └── di_test.go ├── epub-cover.pxm ├── error-types.md ├── for/ │ ├── v1/ │ │ ├── repeat.go │ │ └── repeat_test.go │ ├── v2/ │ │ ├── repeat.go │ │ └── repeat_test.go │ ├── v3/ │ │ ├── repeat.go │ │ └── repeat_test.go │ └── vx/ │ ├── repeat.go │ └── repeat_test.go ├── gb-readme.md ├── generics/ │ ├── assert.go │ ├── generics_test.go │ └── stack.go ├── generics.md ├── go.mod ├── go.sum ├── hello-world/ │ ├── v1/ │ │ └── hello.go │ ├── v2/ │ │ ├── hello.go │ │ └── hello_test.go │ ├── v3/ │ │ ├── hello.go │ │ └── hello_test.go │ ├── v4/ │ │ ├── hello.go │ │ └── hello_test.go │ ├── v5/ │ │ ├── hello.go │ │ └── hello_test.go │ ├── v6/ │ │ ├── hello.go │ │ └── hello_test.go │ ├── v7/ │ │ ├── hello.go │ │ └── hello_test.go │ └── v8/ │ ├── hello.go │ └── hello_test.go ├── hello-world.md ├── html-templates.md ├── http-handlers-revisited.md ├── http-server/ │ ├── v1/ │ │ ├── main.go │ │ ├── server.go │ │ └── server_test.go │ ├── v2/ │ │ ├── main.go │ │ ├── server.go │ │ └── server_test.go │ ├── v3/ │ │ ├── main.go │ │ ├── server.go │ │ └── server_test.go │ ├── v4/ │ │ ├── main.go │ │ ├── server.go │ │ └── server_test.go │ └── v5/ │ ├── in_memory_player_store.go │ ├── main.go │ ├── server.go │ ├── server_integration_test.go │ └── server_test.go ├── http-server.md ├── install-go.md ├── integers/ │ ├── v1/ │ │ ├── adder.go │ │ └── adder_test.go │ └── v2/ │ ├── adder.go │ └── adder_test.go ├── integers.md ├── intro-to-acceptance-tests.md ├── io/ │ ├── v1/ │ │ ├── file_system_store.go │ │ ├── file_system_store_test.go │ │ ├── in_memory_player_store.go │ │ ├── league.go │ │ ├── main.go │ │ ├── server.go │ │ ├── server_integration_test.go │ │ └── server_test.go │ ├── v2/ │ │ ├── file_system_store.go │ │ ├── file_system_store_test.go │ │ ├── in_memory_player_store.go │ │ ├── league.go │ │ ├── main.go │ │ ├── server.go │ │ ├── server_integration_test.go │ │ └── server_test.go │ ├── v3/ │ │ ├── file_system_store.go │ │ ├── file_system_store_test.go │ │ ├── in_memory_player_store.go │ │ ├── league.go │ │ ├── main.go │ │ ├── server.go │ │ ├── server_integration_test.go │ │ └── server_test.go │ ├── v4/ │ │ ├── file_system_store.go │ │ ├── file_system_store_test.go │ │ ├── in_memory_player_store.go │ │ ├── league.go │ │ ├── main.go │ │ ├── server.go │ │ ├── server_integration_test.go │ │ └── server_test.go │ ├── v5/ │ │ ├── file_system_store.go │ │ ├── file_system_store_test.go │ │ ├── league.go │ │ ├── main.go │ │ ├── server.go │ │ ├── server_integration_test.go │ │ └── server_test.go │ ├── v6/ │ │ ├── file_system_store.go │ │ ├── file_system_store_test.go │ │ ├── league.go │ │ ├── main.go │ │ ├── server.go │ │ ├── server_integration_test.go │ │ └── server_test.go │ ├── v7/ │ │ ├── file_system_store.go │ │ ├── file_system_store_test.go │ │ ├── league.go │ │ ├── main.go │ │ ├── server.go │ │ ├── server_integration_test.go │ │ ├── server_test.go │ │ ├── tape.go │ │ └── tape_test.go │ ├── v8/ │ │ ├── file_system_store.go │ │ ├── file_system_store_test.go │ │ ├── league.go │ │ ├── main.go │ │ ├── server.go │ │ ├── server_integration_test.go │ │ ├── server_test.go │ │ ├── tape.go │ │ └── tape_test.go │ └── v9/ │ ├── file_system_store.go │ ├── file_system_store_test.go │ ├── league.go │ ├── main.go │ ├── server.go │ ├── server_integration_test.go │ ├── server_test.go │ ├── tape.go │ └── tape_test.go ├── io.md ├── iteration.md ├── iterators/ │ └── iterators_test.go ├── json/ │ ├── v1/ │ │ ├── in_memory_player_store.go │ │ ├── main.go │ │ ├── server.go │ │ ├── server_integration_test.go │ │ └── server_test.go │ ├── v2/ │ │ ├── in_memory_player_store.go │ │ ├── main.go │ │ ├── server.go │ │ ├── server_integration_test.go │ │ └── server_test.go │ ├── v3/ │ │ ├── in_memory_player_store.go │ │ ├── main.go │ │ ├── server.go │ │ ├── server_integration_test.go │ │ └── server_test.go │ ├── v4/ │ │ ├── in_memory_player_store.go │ │ ├── main.go │ │ ├── server.go │ │ ├── server_integration_test.go │ │ └── server_test.go │ ├── v5/ │ │ ├── in_memory_player_store.go │ │ ├── main.go │ │ ├── server.go │ │ ├── server_integration_test.go │ │ └── server_test.go │ └── v6/ │ ├── in_memory_player_store.go │ ├── main.go │ ├── server.go │ ├── server_integration_test.go │ └── server_test.go ├── json.md ├── maps/ │ ├── v1/ │ │ ├── dictionary.go │ │ └── dictionary_test.go │ ├── v2/ │ │ ├── dictionary.go │ │ └── dictionary_test.go │ ├── v3/ │ │ ├── dictionary.go │ │ └── dictionary_test.go │ ├── v4/ │ │ ├── dictionary.go │ │ └── dictionary_test.go │ ├── v5/ │ │ ├── dictionary.go │ │ └── dictionary_test.go │ ├── v6/ │ │ ├── dictionary.go │ │ └── dictionary_test.go │ └── v7/ │ ├── dictionary.go │ └── dictionary_test.go ├── maps.md ├── math/ │ ├── v1/ │ │ └── clockface/ │ │ ├── clockface.go │ │ └── clockface_test.go │ ├── v10/ │ │ └── clockface/ │ │ ├── clockface/ │ │ │ └── main.go │ │ ├── clockface.go │ │ ├── clockface_acceptance_test.go │ │ ├── clockface_test.go │ │ └── svgWriter.go │ ├── v11/ │ │ └── clockface/ │ │ ├── clockface/ │ │ │ └── main.go │ │ ├── clockface.go │ │ ├── clockface_acceptance_test.go │ │ ├── clockface_test.go │ │ └── svgWriter.go │ ├── v12/ │ │ └── clockface/ │ │ ├── clockface/ │ │ │ └── main.go │ │ ├── clockface.go │ │ ├── clockface_acceptance_test.go │ │ ├── clockface_test.go │ │ └── svgWriter.go │ ├── v2/ │ │ └── clockface/ │ │ ├── clockface.go │ │ ├── clockface_acceptance_test.go │ │ └── clockface_test.go │ ├── v3/ │ │ └── clockface/ │ │ ├── clockface.go │ │ ├── clockface_acceptance_test.go │ │ └── clockface_test.go │ ├── v4/ │ │ └── clockface/ │ │ ├── clockface.go │ │ ├── clockface_acceptance_test.go │ │ └── clockface_test.go │ ├── v5/ │ │ └── clockface/ │ │ ├── clockface.go │ │ ├── clockface_acceptance_test.go │ │ └── clockface_test.go │ ├── v6/ │ │ └── clockface/ │ │ ├── clockface/ │ │ │ └── main.go │ │ ├── clockface.go │ │ ├── clockface_acceptance_test.go │ │ └── clockface_test.go │ ├── v7/ │ │ └── clockface/ │ │ ├── clockface/ │ │ │ └── main.go │ │ ├── clockface.go │ │ ├── clockface_acceptance_test.go │ │ ├── clockface_test.go │ │ └── svgWriter.go │ ├── v7b/ │ │ └── clockface/ │ │ ├── clockface/ │ │ │ └── main.go │ │ ├── clockface.go │ │ ├── clockface_acceptance_test.go │ │ ├── clockface_test.go │ │ └── svgWriter.go │ ├── v7c/ │ │ └── clockface/ │ │ ├── clockface/ │ │ │ └── main.go │ │ ├── clockface.go │ │ ├── clockface_acceptance_test.go │ │ ├── clockface_test.go │ │ └── svgWriter.go │ ├── v8/ │ │ └── clockface/ │ │ ├── clockface/ │ │ │ └── main.go │ │ ├── clockface.go │ │ ├── clockface_acceptance_test.go │ │ ├── clockface_test.go │ │ └── svgWriter.go │ ├── v9/ │ │ └── clockface/ │ │ ├── clockface/ │ │ │ └── main.go │ │ ├── clockface.go │ │ ├── clockface_acceptance_test.go │ │ ├── clockface_test.go │ │ └── svgWriter.go │ └── vFinal/ │ └── clockface/ │ ├── clockface/ │ │ └── main.go │ ├── clockface.go │ ├── clockface_test.go │ └── svg/ │ ├── svg.go │ └── svg_test.go ├── math.md ├── meta.tmpl.tex ├── mocking/ │ ├── v1/ │ │ ├── countdown_test.go │ │ └── main.go │ ├── v2/ │ │ ├── countdown_test.go │ │ └── main.go │ ├── v3/ │ │ ├── countdown_test.go │ │ └── main.go │ ├── v4/ │ │ ├── countdown_test.go │ │ └── main.go │ ├── v5/ │ │ ├── countdown_test.go │ │ └── main.go │ └── v6/ │ ├── countdown_test.go │ └── main.go ├── mocking.md ├── os-exec.md ├── pdf-cover.md ├── pdf-cover.tex ├── pointers/ │ ├── v1/ │ │ ├── wallet.go │ │ └── wallet_test.go │ ├── v2/ │ │ ├── wallet.go │ │ └── wallet_test.go │ ├── v3/ │ │ ├── wallet.go │ │ └── wallet_test.go │ └── v4/ │ ├── wallet.go │ └── wallet_test.go ├── pointers-and-errors.md ├── q-and-a/ │ ├── context-aware-reader/ │ │ ├── context_aware_reader.go │ │ └── context_aware_reader_test.go │ ├── error-types/ │ │ ├── error-types_test.go │ │ └── v2/ │ │ └── error-types_test.go │ ├── http-handlers-revisited/ │ │ ├── basic_test.go │ │ ├── still_basic.go │ │ └── still_basic_test.go │ └── os-exec/ │ ├── msg.xml │ └── os-exec_test.go ├── reading-files/ │ ├── blogposts.go │ ├── blogposts_test.go │ └── post.go ├── reading-files.md ├── refactoring-checklist.md ├── reflection/ │ ├── v1/ │ │ ├── reflection.go │ │ └── reflection_test.go │ ├── v10/ │ │ ├── reflection.go │ │ └── reflection_test.go │ ├── v2/ │ │ ├── reflection.go │ │ └── reflection_test.go │ ├── v3/ │ │ ├── reflection.go │ │ └── reflection_test.go │ ├── v4/ │ │ ├── reflection.go │ │ └── reflection_test.go │ ├── v5/ │ │ ├── reflection.go │ │ └── reflection_test.go │ ├── v6/ │ │ ├── reflection.go │ │ └── reflection_test.go │ ├── v7/ │ │ ├── reflection.go │ │ └── reflection_test.go │ ├── v8/ │ │ ├── reflection.go │ │ └── reflection_test.go │ └── v9/ │ ├── reflection.go │ └── reflection_test.go ├── reflection.md ├── revisiting-arrays-and-slices-with-generics.md ├── roman-numerals/ │ ├── v1/ │ │ └── numeral_test.go │ ├── v10/ │ │ ├── numeral_test.go │ │ └── roman_numerals.go │ ├── v11/ │ │ ├── numeral_test.go │ │ └── roman_numerals.go │ ├── v2/ │ │ └── numeral_test.go │ ├── v3/ │ │ └── numeral_test.go │ ├── v4/ │ │ └── numeral_test.go │ ├── v5/ │ │ └── numeral_test.go │ ├── v6/ │ │ └── numeral_test.go │ ├── v7/ │ │ └── numeral_test.go │ ├── v8/ │ │ └── numeral_test.go │ └── v9/ │ └── numeral_test.go ├── roman-numerals.md ├── scaling-acceptance-tests.md ├── select/ │ ├── v1/ │ │ ├── racer.go │ │ └── racer_test.go │ ├── v2/ │ │ ├── racer.go │ │ └── racer_test.go │ └── v3/ │ ├── racer.go │ └── racer_test.go ├── select.md ├── structs/ │ ├── v1/ │ │ ├── shapes.go │ │ └── shapes_test.go │ ├── v2/ │ │ ├── shapes.go │ │ └── shapes_test.go │ ├── v3/ │ │ ├── shapes.go │ │ └── shapes_test.go │ ├── v4/ │ │ ├── shapes.go │ │ └── shapes_test.go │ ├── v5/ │ │ ├── shapes.go │ │ └── shapes_test.go │ ├── v6/ │ │ ├── shapes.go │ │ └── shapes_test.go │ ├── v7/ │ │ ├── shapes.go │ │ └── shapes_test.go │ └── v8/ │ ├── shapes.go │ └── shapes_test.go ├── structs-methods-and-interfaces.md ├── sync/ │ ├── v1/ │ │ ├── sync.go │ │ └── sync_test.go │ └── v2/ │ ├── sync.go │ └── sync_test.go ├── sync.md ├── template.md ├── time/ │ ├── v1/ │ │ ├── CLI.go │ │ ├── CLI_test.go │ │ ├── blind_alerter.go │ │ ├── cmd/ │ │ │ ├── cli/ │ │ │ │ └── main.go │ │ │ └── webserver/ │ │ │ └── main.go │ │ ├── file_system_store.go │ │ ├── file_system_store_test.go │ │ ├── league.go │ │ ├── server.go │ │ ├── server_integration_test.go │ │ ├── server_test.go │ │ ├── tape.go │ │ ├── tape_test.go │ │ └── testing.go │ ├── v2/ │ │ ├── CLI.go │ │ ├── CLI_test.go │ │ ├── blind_alerter.go │ │ ├── cmd/ │ │ │ ├── cli/ │ │ │ │ └── main.go │ │ │ └── webserver/ │ │ │ └── main.go │ │ ├── file_system_store.go │ │ ├── file_system_store_test.go │ │ ├── league.go │ │ ├── server.go │ │ ├── server_integration_test.go │ │ ├── server_test.go │ │ ├── tape.go │ │ ├── tape_test.go │ │ ├── testing.go │ │ ├── texas_holdem.go │ │ └── texas_holdem_test.go │ └── v3/ │ ├── BlindAlerter.go │ ├── CLI.go │ ├── CLI_test.go │ ├── cmd/ │ │ ├── cli/ │ │ │ └── main.go │ │ └── webserver/ │ │ └── main.go │ ├── file_system_store.go │ ├── file_system_store_test.go │ ├── game.go │ ├── league.go │ ├── server.go │ ├── server_integration_test.go │ ├── server_test.go │ ├── tape.go │ ├── tape_test.go │ ├── testing.go │ ├── texas_holdem.go │ └── texas_holdem_test.go ├── time.md ├── title.txt ├── todo/ │ └── todo1_test.go ├── websockets/ │ ├── v1/ │ │ ├── CLI.go │ │ ├── CLI_test.go │ │ ├── Gopkg.toml │ │ ├── blind_alerter.go │ │ ├── cmd/ │ │ │ ├── cli/ │ │ │ │ └── main.go │ │ │ └── webserver/ │ │ │ └── main.go │ │ ├── file_system_store.go │ │ ├── file_system_store_test.go │ │ ├── game.go │ │ ├── game.html │ │ ├── league.go │ │ ├── server.go │ │ ├── server_integration_test.go │ │ ├── server_test.go │ │ ├── tape.go │ │ ├── tape_test.go │ │ ├── testing.go │ │ ├── texas_holdem.go │ │ ├── texas_holdem_test.go │ │ └── vendor/ │ │ └── github.com/ │ │ └── gorilla/ │ │ └── websocket/ │ │ ├── .gitignore │ │ ├── .travis.yml │ │ ├── AUTHORS │ │ ├── LICENSE │ │ ├── README.md │ │ ├── client.go │ │ ├── client_clone.go │ │ ├── client_clone_legacy.go │ │ ├── compression.go │ │ ├── conn.go │ │ ├── conn_write.go │ │ ├── conn_write_legacy.go │ │ ├── doc.go │ │ ├── json.go │ │ ├── mask.go │ │ ├── mask_safe.go │ │ ├── prepared.go │ │ ├── proxy.go │ │ ├── server.go │ │ ├── trace.go │ │ ├── trace_17.go │ │ ├── util.go │ │ └── x_net_proxy.go │ └── v2/ │ ├── CLI.go │ ├── CLI_test.go │ ├── Gopkg.toml │ ├── blind_alerter.go │ ├── cmd/ │ │ ├── cli/ │ │ │ └── main.go │ │ └── webserver/ │ │ └── main.go │ ├── file_system_store.go │ ├── file_system_store_test.go │ ├── game.go │ ├── game.html │ ├── league.go │ ├── player_server_ws.go │ ├── server.go │ ├── server_integration_test.go │ ├── server_test.go │ ├── tape.go │ ├── tape_test.go │ ├── testing.go │ ├── texas_holdem.go │ ├── texas_holdem_test.go │ └── vendor/ │ └── github.com/ │ └── gorilla/ │ └── websocket/ │ ├── .gitignore │ ├── .travis.yml │ ├── AUTHORS │ ├── LICENSE │ ├── README.md │ ├── client.go │ ├── client_clone.go │ ├── client_clone_legacy.go │ ├── compression.go │ ├── conn.go │ ├── conn_write.go │ ├── conn_write_legacy.go │ ├── doc.go │ ├── json.go │ ├── mask.go │ ├── mask_safe.go │ ├── prepared.go │ ├── proxy.go │ ├── server.go │ ├── trace.go │ ├── trace_17.go │ ├── util.go │ └── x_net_proxy.go ├── websockets.md ├── why.md └── working-without-mocks.md