├── README.md └── src ├── ch1 ├── hello │ └── hello_world.go └── main │ └── main.go ├── ch10 └── func │ └── func_test.go ├── ch11 ├── customer_type │ └── customer_type_test.go ├── encapsulation │ └── encap_test.go └── interface │ └── interface_test.go ├── ch12 └── extension │ └── extension_test.go ├── ch13 ├── empty_interface │ └── empty_interface_test.go └── polymorphsim │ └── polymorphsim_test.go ├── ch14 ├── error │ └── error_test.go └── panic_recover │ └── panic_recover_test.go ├── ch15 ├── client │ └── package_test.go ├── remote_package │ └── remote_package_test.go └── series │ └── my_series.go ├── ch16 └── gorutine │ └── groutine_test.go ├── ch17 └── share_mem │ └── share_mem_test.go ├── ch18 └── csp │ └── async_service_test.go ├── ch19 └── select │ └── select_test.go ├── ch2 ├── constant_test │ └── constant_try_test.go └── fib │ └── fib_test.go ├── ch20 └── channel_close │ └── channel_close_test.go ├── ch20_1 └── cancel_by_close │ └── cancel_test.go ├── ch20_2 └── cancel_by_close │ └── cancel_test.go ├── ch21 └── singleton │ └── once_test.go ├── ch22 └── util_anyone_reply │ └── frist_response_test.go ├── ch23 └── until_all_reply │ └── untill_all_test.go ├── ch24 └── obj_pool │ ├── obj_pool.go │ └── obj_pool_test.go ├── ch25 └── obj_cache │ └── sync_pool_test.go ├── ch3 └── type_test │ └── type_test.go ├── ch32 └── unit_test │ ├── functions.go │ └── functions_test.go ├── ch33 └── benchmark │ └── concat_string_test.go ├── ch34 └── bdd │ └── bdd_spec_test.go ├── ch35 └── reflect │ └── reflect_test.go ├── ch36 └── flexible_reflect_test.go ├── ch38 └── unsafe_programming │ └── unsafe_test.go ├── ch39 └── pipe_filter │ ├── filter.go │ ├── split_filter.go │ ├── split_filter_test.go │ ├── straigt_pipeline.go │ ├── straigt_pipeline_test.go │ ├── sum_filter.go │ ├── sum_filter_test.go │ ├── to_int_filter.go │ └── to_int_filter_test.go ├── ch4 └── operator_test │ └── operator_test.go ├── ch40 └── microkernel │ ├── agent.go │ └── agent_test.go ├── ch41 └── json │ ├── embedded_json_test.go │ └── struct_def.go ├── ch42 └── easyjson │ ├── embedded_json_test.go │ ├── struct_def.go │ └── struct_def_easyjson.go ├── ch43 ├── hello_http │ └── hello_http.go └── roa │ └── resource_oriented_arc.go ├── ch44 └── tools │ ├── file │ ├── cpuporf.png │ └── prof.go │ └── http │ └── fb_server.go ├── ch45 ├── easyjsonls.png ├── list.png ├── ls.png ├── optimization_test.go ├── optmization.go ├── structs.go ├── top-cum.png ├── top.png ├── yhbench.png └── yhcreatecpuprof.png ├── ch46 ├── lock │ └── lock_test.go └── maps │ ├── concurrent_map_benchmark_adapter.go │ ├── map_benchmark_test.go │ ├── rw_map.go │ └── sync_map_benchmark_adapter.go ├── ch47 └── gc_friendly │ ├── auto_growing │ └── auto_growing_test.go │ └── pass_ref │ ├── pass_array_test.go │ ├── ref.png │ └── val.png ├── ch48 └── concat_string_test.go ├── ch5 └── loop │ └── loop_test.go ├── ch6 ├── array_test │ └── array_test.go └── slice_test │ └── slice_test.go ├── ch7 └── map │ └── map_test.go ├── ch8 └── map │ └── map_test.go ├── ch9 └── string │ ├── string_fun_test.go │ └── string_test.go ├── eventcenter └── eventcenter_test.go └── mianshi └── mianshi_test.go /README.md: -------------------------------------------------------------------------------- 1 | # golearning 2 | go语言学习笔记 3 | -------------------------------------------------------------------------------- /src/ch1/hello/hello_world.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wenjianzhang/golearning/HEAD/src/ch1/hello/hello_world.go -------------------------------------------------------------------------------- /src/ch1/main/main.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wenjianzhang/golearning/HEAD/src/ch1/main/main.go -------------------------------------------------------------------------------- /src/ch10/func/func_test.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wenjianzhang/golearning/HEAD/src/ch10/func/func_test.go -------------------------------------------------------------------------------- /src/ch11/customer_type/customer_type_test.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wenjianzhang/golearning/HEAD/src/ch11/customer_type/customer_type_test.go -------------------------------------------------------------------------------- /src/ch11/encapsulation/encap_test.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wenjianzhang/golearning/HEAD/src/ch11/encapsulation/encap_test.go -------------------------------------------------------------------------------- /src/ch11/interface/interface_test.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wenjianzhang/golearning/HEAD/src/ch11/interface/interface_test.go -------------------------------------------------------------------------------- /src/ch12/extension/extension_test.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wenjianzhang/golearning/HEAD/src/ch12/extension/extension_test.go -------------------------------------------------------------------------------- /src/ch13/empty_interface/empty_interface_test.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wenjianzhang/golearning/HEAD/src/ch13/empty_interface/empty_interface_test.go -------------------------------------------------------------------------------- /src/ch13/polymorphsim/polymorphsim_test.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wenjianzhang/golearning/HEAD/src/ch13/polymorphsim/polymorphsim_test.go -------------------------------------------------------------------------------- /src/ch14/error/error_test.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wenjianzhang/golearning/HEAD/src/ch14/error/error_test.go -------------------------------------------------------------------------------- /src/ch14/panic_recover/panic_recover_test.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wenjianzhang/golearning/HEAD/src/ch14/panic_recover/panic_recover_test.go -------------------------------------------------------------------------------- /src/ch15/client/package_test.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wenjianzhang/golearning/HEAD/src/ch15/client/package_test.go -------------------------------------------------------------------------------- /src/ch15/remote_package/remote_package_test.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wenjianzhang/golearning/HEAD/src/ch15/remote_package/remote_package_test.go -------------------------------------------------------------------------------- /src/ch15/series/my_series.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wenjianzhang/golearning/HEAD/src/ch15/series/my_series.go -------------------------------------------------------------------------------- /src/ch16/gorutine/groutine_test.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wenjianzhang/golearning/HEAD/src/ch16/gorutine/groutine_test.go -------------------------------------------------------------------------------- /src/ch17/share_mem/share_mem_test.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wenjianzhang/golearning/HEAD/src/ch17/share_mem/share_mem_test.go -------------------------------------------------------------------------------- /src/ch18/csp/async_service_test.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wenjianzhang/golearning/HEAD/src/ch18/csp/async_service_test.go -------------------------------------------------------------------------------- /src/ch19/select/select_test.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wenjianzhang/golearning/HEAD/src/ch19/select/select_test.go -------------------------------------------------------------------------------- /src/ch2/constant_test/constant_try_test.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wenjianzhang/golearning/HEAD/src/ch2/constant_test/constant_try_test.go -------------------------------------------------------------------------------- /src/ch2/fib/fib_test.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wenjianzhang/golearning/HEAD/src/ch2/fib/fib_test.go -------------------------------------------------------------------------------- /src/ch20/channel_close/channel_close_test.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wenjianzhang/golearning/HEAD/src/ch20/channel_close/channel_close_test.go -------------------------------------------------------------------------------- /src/ch20_1/cancel_by_close/cancel_test.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wenjianzhang/golearning/HEAD/src/ch20_1/cancel_by_close/cancel_test.go -------------------------------------------------------------------------------- /src/ch20_2/cancel_by_close/cancel_test.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wenjianzhang/golearning/HEAD/src/ch20_2/cancel_by_close/cancel_test.go -------------------------------------------------------------------------------- /src/ch21/singleton/once_test.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wenjianzhang/golearning/HEAD/src/ch21/singleton/once_test.go -------------------------------------------------------------------------------- /src/ch22/util_anyone_reply/frist_response_test.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wenjianzhang/golearning/HEAD/src/ch22/util_anyone_reply/frist_response_test.go -------------------------------------------------------------------------------- /src/ch23/until_all_reply/untill_all_test.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wenjianzhang/golearning/HEAD/src/ch23/until_all_reply/untill_all_test.go -------------------------------------------------------------------------------- /src/ch24/obj_pool/obj_pool.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wenjianzhang/golearning/HEAD/src/ch24/obj_pool/obj_pool.go -------------------------------------------------------------------------------- /src/ch24/obj_pool/obj_pool_test.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wenjianzhang/golearning/HEAD/src/ch24/obj_pool/obj_pool_test.go -------------------------------------------------------------------------------- /src/ch25/obj_cache/sync_pool_test.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wenjianzhang/golearning/HEAD/src/ch25/obj_cache/sync_pool_test.go -------------------------------------------------------------------------------- /src/ch3/type_test/type_test.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wenjianzhang/golearning/HEAD/src/ch3/type_test/type_test.go -------------------------------------------------------------------------------- /src/ch32/unit_test/functions.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wenjianzhang/golearning/HEAD/src/ch32/unit_test/functions.go -------------------------------------------------------------------------------- /src/ch32/unit_test/functions_test.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wenjianzhang/golearning/HEAD/src/ch32/unit_test/functions_test.go -------------------------------------------------------------------------------- /src/ch33/benchmark/concat_string_test.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wenjianzhang/golearning/HEAD/src/ch33/benchmark/concat_string_test.go -------------------------------------------------------------------------------- /src/ch34/bdd/bdd_spec_test.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wenjianzhang/golearning/HEAD/src/ch34/bdd/bdd_spec_test.go -------------------------------------------------------------------------------- /src/ch35/reflect/reflect_test.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wenjianzhang/golearning/HEAD/src/ch35/reflect/reflect_test.go -------------------------------------------------------------------------------- /src/ch36/flexible_reflect_test.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wenjianzhang/golearning/HEAD/src/ch36/flexible_reflect_test.go -------------------------------------------------------------------------------- /src/ch38/unsafe_programming/unsafe_test.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wenjianzhang/golearning/HEAD/src/ch38/unsafe_programming/unsafe_test.go -------------------------------------------------------------------------------- /src/ch39/pipe_filter/filter.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wenjianzhang/golearning/HEAD/src/ch39/pipe_filter/filter.go -------------------------------------------------------------------------------- /src/ch39/pipe_filter/split_filter.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wenjianzhang/golearning/HEAD/src/ch39/pipe_filter/split_filter.go -------------------------------------------------------------------------------- /src/ch39/pipe_filter/split_filter_test.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wenjianzhang/golearning/HEAD/src/ch39/pipe_filter/split_filter_test.go -------------------------------------------------------------------------------- /src/ch39/pipe_filter/straigt_pipeline.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wenjianzhang/golearning/HEAD/src/ch39/pipe_filter/straigt_pipeline.go -------------------------------------------------------------------------------- /src/ch39/pipe_filter/straigt_pipeline_test.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wenjianzhang/golearning/HEAD/src/ch39/pipe_filter/straigt_pipeline_test.go -------------------------------------------------------------------------------- /src/ch39/pipe_filter/sum_filter.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wenjianzhang/golearning/HEAD/src/ch39/pipe_filter/sum_filter.go -------------------------------------------------------------------------------- /src/ch39/pipe_filter/sum_filter_test.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wenjianzhang/golearning/HEAD/src/ch39/pipe_filter/sum_filter_test.go -------------------------------------------------------------------------------- /src/ch39/pipe_filter/to_int_filter.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wenjianzhang/golearning/HEAD/src/ch39/pipe_filter/to_int_filter.go -------------------------------------------------------------------------------- /src/ch39/pipe_filter/to_int_filter_test.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wenjianzhang/golearning/HEAD/src/ch39/pipe_filter/to_int_filter_test.go -------------------------------------------------------------------------------- /src/ch4/operator_test/operator_test.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wenjianzhang/golearning/HEAD/src/ch4/operator_test/operator_test.go -------------------------------------------------------------------------------- /src/ch40/microkernel/agent.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wenjianzhang/golearning/HEAD/src/ch40/microkernel/agent.go -------------------------------------------------------------------------------- /src/ch40/microkernel/agent_test.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wenjianzhang/golearning/HEAD/src/ch40/microkernel/agent_test.go -------------------------------------------------------------------------------- /src/ch41/json/embedded_json_test.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wenjianzhang/golearning/HEAD/src/ch41/json/embedded_json_test.go -------------------------------------------------------------------------------- /src/ch41/json/struct_def.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wenjianzhang/golearning/HEAD/src/ch41/json/struct_def.go -------------------------------------------------------------------------------- /src/ch42/easyjson/embedded_json_test.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wenjianzhang/golearning/HEAD/src/ch42/easyjson/embedded_json_test.go -------------------------------------------------------------------------------- /src/ch42/easyjson/struct_def.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wenjianzhang/golearning/HEAD/src/ch42/easyjson/struct_def.go -------------------------------------------------------------------------------- /src/ch42/easyjson/struct_def_easyjson.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wenjianzhang/golearning/HEAD/src/ch42/easyjson/struct_def_easyjson.go -------------------------------------------------------------------------------- /src/ch43/hello_http/hello_http.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wenjianzhang/golearning/HEAD/src/ch43/hello_http/hello_http.go -------------------------------------------------------------------------------- /src/ch43/roa/resource_oriented_arc.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wenjianzhang/golearning/HEAD/src/ch43/roa/resource_oriented_arc.go -------------------------------------------------------------------------------- /src/ch44/tools/file/cpuporf.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wenjianzhang/golearning/HEAD/src/ch44/tools/file/cpuporf.png -------------------------------------------------------------------------------- /src/ch44/tools/file/prof.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wenjianzhang/golearning/HEAD/src/ch44/tools/file/prof.go -------------------------------------------------------------------------------- /src/ch44/tools/http/fb_server.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wenjianzhang/golearning/HEAD/src/ch44/tools/http/fb_server.go -------------------------------------------------------------------------------- /src/ch45/easyjsonls.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wenjianzhang/golearning/HEAD/src/ch45/easyjsonls.png -------------------------------------------------------------------------------- /src/ch45/list.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wenjianzhang/golearning/HEAD/src/ch45/list.png -------------------------------------------------------------------------------- /src/ch45/ls.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wenjianzhang/golearning/HEAD/src/ch45/ls.png -------------------------------------------------------------------------------- /src/ch45/optimization_test.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wenjianzhang/golearning/HEAD/src/ch45/optimization_test.go -------------------------------------------------------------------------------- /src/ch45/optmization.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wenjianzhang/golearning/HEAD/src/ch45/optmization.go -------------------------------------------------------------------------------- /src/ch45/structs.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wenjianzhang/golearning/HEAD/src/ch45/structs.go -------------------------------------------------------------------------------- /src/ch45/top-cum.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wenjianzhang/golearning/HEAD/src/ch45/top-cum.png -------------------------------------------------------------------------------- /src/ch45/top.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wenjianzhang/golearning/HEAD/src/ch45/top.png -------------------------------------------------------------------------------- /src/ch45/yhbench.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wenjianzhang/golearning/HEAD/src/ch45/yhbench.png -------------------------------------------------------------------------------- /src/ch45/yhcreatecpuprof.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wenjianzhang/golearning/HEAD/src/ch45/yhcreatecpuprof.png -------------------------------------------------------------------------------- /src/ch46/lock/lock_test.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wenjianzhang/golearning/HEAD/src/ch46/lock/lock_test.go -------------------------------------------------------------------------------- /src/ch46/maps/concurrent_map_benchmark_adapter.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wenjianzhang/golearning/HEAD/src/ch46/maps/concurrent_map_benchmark_adapter.go -------------------------------------------------------------------------------- /src/ch46/maps/map_benchmark_test.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wenjianzhang/golearning/HEAD/src/ch46/maps/map_benchmark_test.go -------------------------------------------------------------------------------- /src/ch46/maps/rw_map.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wenjianzhang/golearning/HEAD/src/ch46/maps/rw_map.go -------------------------------------------------------------------------------- /src/ch46/maps/sync_map_benchmark_adapter.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wenjianzhang/golearning/HEAD/src/ch46/maps/sync_map_benchmark_adapter.go -------------------------------------------------------------------------------- /src/ch47/gc_friendly/auto_growing/auto_growing_test.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wenjianzhang/golearning/HEAD/src/ch47/gc_friendly/auto_growing/auto_growing_test.go -------------------------------------------------------------------------------- /src/ch47/gc_friendly/pass_ref/pass_array_test.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wenjianzhang/golearning/HEAD/src/ch47/gc_friendly/pass_ref/pass_array_test.go -------------------------------------------------------------------------------- /src/ch47/gc_friendly/pass_ref/ref.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wenjianzhang/golearning/HEAD/src/ch47/gc_friendly/pass_ref/ref.png -------------------------------------------------------------------------------- /src/ch47/gc_friendly/pass_ref/val.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wenjianzhang/golearning/HEAD/src/ch47/gc_friendly/pass_ref/val.png -------------------------------------------------------------------------------- /src/ch48/concat_string_test.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wenjianzhang/golearning/HEAD/src/ch48/concat_string_test.go -------------------------------------------------------------------------------- /src/ch5/loop/loop_test.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wenjianzhang/golearning/HEAD/src/ch5/loop/loop_test.go -------------------------------------------------------------------------------- /src/ch6/array_test/array_test.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wenjianzhang/golearning/HEAD/src/ch6/array_test/array_test.go -------------------------------------------------------------------------------- /src/ch6/slice_test/slice_test.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wenjianzhang/golearning/HEAD/src/ch6/slice_test/slice_test.go -------------------------------------------------------------------------------- /src/ch7/map/map_test.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wenjianzhang/golearning/HEAD/src/ch7/map/map_test.go -------------------------------------------------------------------------------- /src/ch8/map/map_test.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wenjianzhang/golearning/HEAD/src/ch8/map/map_test.go -------------------------------------------------------------------------------- /src/ch9/string/string_fun_test.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wenjianzhang/golearning/HEAD/src/ch9/string/string_fun_test.go -------------------------------------------------------------------------------- /src/ch9/string/string_test.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wenjianzhang/golearning/HEAD/src/ch9/string/string_test.go -------------------------------------------------------------------------------- /src/eventcenter/eventcenter_test.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wenjianzhang/golearning/HEAD/src/eventcenter/eventcenter_test.go -------------------------------------------------------------------------------- /src/mianshi/mianshi_test.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/wenjianzhang/golearning/HEAD/src/mianshi/mianshi_test.go --------------------------------------------------------------------------------