Directories
¶
| Path | Synopsis |
|---|---|
|
lection_2
|
|
|
1_variables
command
многострочный комментарий переменные в golang
|
многострочный комментарий переменные в golang |
|
2_constants
command
|
|
|
3_arrays
command
|
|
|
4_slices
command
|
|
|
5_maps
command
|
|
|
6_control
command
|
|
|
lection_3
|
|
|
10_structs/0_simple
command
|
|
|
10_structs/1_ints
command
|
|
|
10_structs/2_methods
command
|
|
|
10_structs/3_embed
command
|
|
|
11_ifaces/0_iface
command
|
|
|
11_ifaces/1_type_assertions
command
|
|
|
11_ifaces/2_errors
command
|
|
|
11_ifaces/3_nil
command
|
|
|
11_ifaces/4_decorator.go
command
|
|
|
11_ifaces/5_decorator
command
|
|
|
7_unicode
command
|
|
|
8_package_func_doc
command
|
|
|
8_package_func_doc/world
Package world документация ко всему пакету
|
Package world документация ко всему пакету |
|
9_funcs/0_simple
command
|
|
|
9_funcs/1_closures
command
|
|
|
9_funcs/2_defer
command
|
|
|
9_funcs/3_panic
command
|
|
|
scratches
command
|
|
|
lection_4
|
|
|
1_type_assertions
command
|
|
|
2_errors
command
|
|
|
3_nil
command
|
|
|
4_decorator
command
|
|
|
scratch
command
|
|
|
lection_5
|
|
|
1_simple
command
Запуск go рутин именованные функции или анонимные
|
Запуск go рутин именованные функции или анонимные |
|
2_shared_data
command
Go рутины, одновременно работающие с общими данными сами собой не могу синхронизироваться
|
Go рутины, одновременно работающие с общими данными сами собой не могу синхронизироваться |
|
3_chanels
command
Один из механизмов синхронизации - каналы Каналы, это объект через который можно обеспечить взаимодействие нескольких горутин В принимающей (или возвращающей) канал функции, можно указать направление работы с каналом Только для чтения - "<-chan" или только для записи "chan<-"
|
Один из механизмов синхронизации - каналы Каналы, это объект через который можно обеспечить взаимодействие нескольких горутин В принимающей (или возвращающей) канал функции, можно указать направление работы с каналом Только для чтения - "<-chan" или только для записи "chan<-" |
|
3_chanels/mail
command
|
|
|
4_generators
command
|
|
|
5_multiplexor
command
Иногда у вас есть несколько каналов, и вы хотите читать из любого из них В самом простом случае - можно сделать функцию, которая вернет значения из любого переданного канала
|
Иногда у вас есть несколько каналов, и вы хотите читать из любого из них В самом простом случае - можно сделать функцию, которая вернет значения из любого переданного канала |
|
6_select
command
Но гораздо проще объединять логику каналов через оператор select Он позволяет проверить на возможность операции с несколькими каналами сразу.
|
Но гораздо проще объединять логику каналов через оператор select Он позволяет проверить на возможность операции с несколькими каналами сразу. |
|
7_multiplex2
command
|
|
|
lection_6
|
|
|
10_race/atomic
command
Также, когда само общее значение - это просто число Можно использовать пакет atomic, для того, чтобы гарантировать очередность изменений объекта
|
Также, когда само общее значение - это просто число Можно использовать пакет atomic, для того, чтобы гарантировать очередность изменений объекта |
|
10_race/channel
command
|
|
|
10_race/mutex
command
Go рутины, одновременно работающие с общими данными сами собой не могу синхронизироваться Как пример защиты данных от небезопасных изменений, можно использовать структуру Mutex У нее также нет публичных полей, но, есть два публичных метода Lock(), который даст только одной подпрограмме продолжить выполнение блока, остальне заблокируются в ожидании Unlock(), который снимает лок, захваченный ранее
|
Go рутины, одновременно работающие с общими данными сами собой не могу синхронизироваться Как пример защиты данных от небезопасных изменений, можно использовать структуру Mutex У нее также нет публичных полей, но, есть два публичных метода Lock(), который даст только одной подпрограмме продолжить выполнение блока, остальне заблокируются в ожидании Unlock(), который снимает лок, захваченный ранее |
|
11_workerpool
command
Более сложный пример, с использованием пула обработчиков для типовых задач
|
Более сложный пример, с использованием пула обработчиков для типовых задач |
|
8_deadlock
command
Если при запуске программы все go рутины окажутся в состоянии ожидания, runtime выкинет панику, с сообщением all goroutines are sleeping
|
Если при запуске программы все go рутины окажутся в состоянии ожидания, runtime выкинет панику, с сообщением all goroutines are sleeping |
|
9_cancel
command
Но, безопаснее использовать пакет sync, в частности структуру WaitGroup У нее нет публичных полей, но есть 3 метода Add увеличивает счетчик ожидаемых работ, Done декрементит, Wait - блокируется, пока внутренний счетчик не станет равным 0
|
Но, безопаснее использовать пакет sync, в частности структуру WaitGroup У нее нет публичных полей, но есть 3 метода Add увеличивает счетчик ожидаемых работ, Done декрементит, Wait - блокируется, пока внутренний счетчик не станет равным 0 |
|
scratch
|
|
|
lection_1
command
|
Click to show internal directories.
Click to hide internal directories.