README ¶ The code for this repository is under development 👷 Expand ▾ Collapse ▴ Documentation ¶ There is no documentation for this package. Source Files ¶ View all Source files fake.go Directories ¶ Show internal Expand all Path Synopsis Chapter01 01_concurrency_parallelism 02_parallelism_cost/01_sequential 02_parallelism_cost/02_concurrent 03_goroutine_cost/01 03_goroutine_cost/02 04_select_control_flow 05_select_data_flow 06_csp_usability 07_deadlock/01_mutexes 07_deadlock/02_channels 08_starvation 09_livelock 10_detect_fix_avoid/01_communicate_dont_share/01_mutex 10_detect_fix_avoid/01_communicate_dont_share/02_channel 10_detect_fix_avoid/02_separate_logic 10_detect_fix_avoid/03_reduce_lock_coverage 10_detect_fix_avoid/04_memory_for_lock_time 10_detect_fix_avoid/05_serialize_access/01_mutex 10_detect_fix_avoid/05_serialize_access/02_channel 10_detect_fix_avoid/08_indeterminate_select 11_data_race/02_partitioned_map 12_sync_atomic/02_thread_safe_slice 12_sync_atomic/03_dynamic_config 13_sync/01_waitgroup 13_sync/02_channel_wait_group 13_sync/03_once 13_sync/04_mutex/01_deadlock 13_sync/04_mutex/02_reentrant 13_sync/05_pool 13_sync/06_cond Chapter02 01_anonymous_closures 02_unpredictable/01_without_sync 02_unpredictable/02_with_sync 02_unpredictable/03_without_goroutine 03_clean_up 03_clean_up/04_debug_leaks 04_exit_conditions/01_broken 04_exit_conditions/02_fixed 05_not_threads/01_interruption 05_not_threads/02_less_goroutines 05_not_threads/03_more_procs 05_not_threads/04_gosched 05_not_threads/05_mutex 06_long_vs_lots/01_lots 06_long_vs_lots/02_lots 06_long_vs_lots/03_long 06_long_vs_lots/04_long 07_slow_consumers 08_read_from_closed 09_skip_close 11_timeout 12_read_from_nil 13_semaphores/01_limit_running 13_semaphores/02_limit_pending 13_semaphores/03_weighted 14_copy_on_write 15_batching 16_reply_channel 17_event_listener 18_fastest_responder 19_update_oldest 20_pool 21_execution_tracing/01_add_tracing 21_execution_tracing/02_lots_vs_long/01_lots 21_execution_tracing/02_lots_vs_long/02_lots 21_execution_tracing/02_lots_vs_long/03_long 21_execution_tracing/02_lots_vs_long/04_long 21_execution_tracing/03_channel 22_mutexes 23_cross_streams Chapter03 01_when_to_optimize 03_pprof/01_cpu_profiling/01_cards 03_pprof/01_cpu_profiling/02_downloader 03_pprof/01_cpu_profiling/game 03_pprof/02_memory_profiling/01_cards 03_pprof/02_memory_profiling/game 03_pprof/03_blocking_profiling/01_waitgroup 03_pprof/03_blocking_profiling/02_channel_send 03_pprof/03_blocking_profiling/03_channel_receive 03_pprof/04_mutex_profiling/01_mutex 03_pprof/04_mutex_profiling/02_defer 04_benchmarking/05_extended 05_patterns/03_once 05_patterns/04_once_again 05_patterns/05_data Chapter04 01_software_design_principles/01_minimalist_modular 01_software_design_principles/03_delegation/01_no_delegation 01_software_design_principles/03_delegation/02_delegation 01_software_design_principles/03_delegation/03_naive 01_software_design_principles/03_delegation/04_optional_delegation 01_software_design_principles/04_composition_over_inheritance/01_composition 01_software_design_principles/04_composition_over_inheritance/02_anonymous 01_software_design_principles/05_accept_interface_return_struct/01_accept_struct 01_software_design_principles/05_accept_interface_return_struct/02_accept_interface 01_software_design_principles/05_accept_interface_return_struct/03_testability 01_software_design_principles/05_accept_interface_return_struct/03_testability/internal/repo 01_software_design_principles/05_accept_interface_return_struct/03_testability/internal/user 01_software_design_principles/05_accept_interface_return_struct/04_testability_improved 01_software_design_principles/05_accept_interface_return_struct/04_testability_improved/internal/repo 01_software_design_principles/05_accept_interface_return_struct/04_testability_improved/internal/user 01_software_design_principles/05_accept_interface_return_struct/05_implicit_interfaces 01_software_design_principles/06_singles/01_purpose 01_software_design_principles/06_singles/02_responsibility/01_before 01_software_design_principles/06_singles/02_responsibility/02_after 01_software_design_principles/06_singles/03_abstraction/01_before 01_software_design_principles/06_singles/03_abstraction/02_after 01_software_design_principles/07_interface_segregation/01_fat_interface 01_software_design_principles/07_interface_segregation/02_thin_interface 02_design_patterns/01_singleton/01_simple 02_design_patterns/01_singleton/02_strict 02_design_patterns/02_factory_method/01_before 02_design_patterns/02_factory_method/02_example 02_design_patterns/03_observer 02_design_patterns/04_adapter/01_simple 02_design_patterns/04_adapter/02_embedding 02_design_patterns/04_adapter/03_go_types 02_design_patterns/04_adapter/03_go_types/version1 02_design_patterns/04_adapter/03_go_types/version2 Chapter05 01_functional_programming/01_idempotent/01_non_idempotent 01_functional_programming/01_idempotent/02_idempotent 01_functional_programming/02_higher_order 01_functional_programming/03_recursion 01_functional_programming/04_currying/01_normal 01_functional_programming/04_currying/02_function_currying 01_functional_programming/04_currying/03_referential_transparency/01_maps 01_functional_programming/04_currying/03_referential_transparency/02_slices 02_fun_with_functions/01_understanding/01_anonymous/01_regular 02_fun_with_functions/01_understanding/01_anonymous/02_anonymous 02_fun_with_functions/01_understanding/01_anonymous/03_monkey_patch 02_fun_with_functions/01_understanding/02_closures/01_greetings 02_fun_with_functions/01_understanding/02_closures/02_state 02_fun_with_functions/02_patterns/01_abstract_methods 02_fun_with_functions/02_patterns/02_middleware/01_no_middleware 02_fun_with_functions/02_patterns/02_middleware/02_middleware 02_fun_with_functions/02_patterns/03_functional_options/01_single_function 02_fun_with_functions/02_patterns/03_functional_options/02_struct_config 02_fun_with_functions/02_patterns/03_functional_options/03_functional_options 02_fun_with_functions/02_patterns/04_decoration 04_struct_tricks/01_empty/03_signal Click to show internal directories. Click to hide internal directories.