https://github.com/rapter1990/go_sample_examples
Go Sample Examples
https://github.com/rapter1990/go_sample_examples
documentation example examples go go-example-simple go-examples golang readme resource
Last synced: 5 months ago
JSON representation
Go Sample Examples
- Host: GitHub
- URL: https://github.com/rapter1990/go_sample_examples
- Owner: Rapter1990
- Created: 2024-09-04T19:42:40.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2024-09-22T19:31:07.000Z (over 1 year ago)
- Last Synced: 2025-07-27T16:53:32.267Z (6 months ago)
- Topics: documentation, example, examples, go, go-example-simple, go-examples, golang, readme, resource
- Language: Go
- Homepage:
- Size: 357 KB
- Stars: 14
- Watchers: 1
- Forks: 2
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Go Sample Examples
### 📖 Information
- This project showcases sample Go applications demonstrating various functionalities, including data processing, web server management, and concurrent programming techniques.
- It is designed to help developers understand Go's syntax, features, and best practices through practical examples.
- The repository includes:
- Examples of basic Go data structures, functions, and interfaces.
- Web server setup using Go's standard library for HTTP handling.
- Concurrency examples using goroutines, channels, and the Go scheduler.
- File handling operations like reading from and writing to files.
- Working with arrays, slices, and maps to demonstrate Go's powerful collection types.
- JSON encoding and decoding examples, including working with custom data structures.
- Error handling following Go idioms to demonstrate best practices for robust programs.
- Basic data parsing, string manipulation, arithmetic operations, and JSON handling in Go.
### Explore Go Sample Examples
Examples Summary
ID
Example
Description
Link
1
Hello World
Basic example of printing "Hello, World!" to the console.
001_hello_world
2
Variables & Types
Demonstrates variable declaration, initialization, and types.
002_variables
3
Control Flow
Shows usage of for loops, while loops, if-else statements, and switch statements.
003_for_while_if_else_switch
4
Array, Slice, Range, Map
Demonstrates array and slice operations, range iteration, and map manipulation.
004_array_slice_range_map
5
Functions
Illustrates basic function usage, variadic functions, closures, and recursion.
005_function
6
Pointers
Shows how to use pointers to modify values, structs, slices, and maps. Includes pointer-to-pointer operations.
006_pointer
7
Strings & Runes
Explains how to manipulate strings and runes, including encoding, slicing, and comparing.
007_strings_runes
8
Structs
Demonstrates struct declaration, methods, embedded structs, JSON tags, and more.
008_structs
9
Interfaces
Covers defining and implementing interfaces, type assertions, type switches, and using methods with multiple interfaces.
009_interfaces
10
Error Handling
Shows basic error creation, custom error types, error wrapping, unwrapping, and checking for specific errors.
010_error
11
Goroutines & Channels
Demonstrates using Goroutines for concurrency, WaitGroups for synchronization, channels for communication, and mutex for safe access to shared data.
011_goroutine_channel
12
Buffering
Shows how to use buffered channels, select statements, and bytes.Buffer, along with a custom buffer implementation.
012_buffering
13
Channel Synchronization
Demonstrates different ways of using channels for synchronization, including WaitGroups, one-way channels, and fan-out/fan-in patterns.
013_channel_synchronization
14
Channel Directions
Shows how to use directional channels (send-only and receive-only) in Go, with examples including ping-pong, pipelining, and buffered channels.
014_channel_directions
15
Channel Select
Demonstrates the use of select statement with multiple channels to handle concurrent events.
015_channel_select
16
Timeouts
Illustrates how to use timeouts with Goroutines and channels to control the execution flow.
016_timeouts
17
Channel Non-Blocking
Demonstrates non-blocking operations on channels using the select statement.
017_channel_non_blocking
18
Basic Channel Closing
Shows how to close a channel and handle its closure properly.
01_basic_channel_closing
Detecting Closed Channel
Explains how to detect if a channel has been closed and how to handle it.
02_detecting_closed_channel
Closing Channels in Multiple Goroutines
Demonstrates how to safely close channels when multiple Goroutines are involved.
03_closing_channels_in_multiple_goroutines
Sending a Signal with a Closed Channel
Shows the behavior of sending signals through a closed channel and how to manage it.
04_sending_a_signal_with_a_closed_channel
Panic When Closing an Already Closed Channel
Explains what happens when you attempt to close an already closed channel and how to handle it.
05_panic_when_closing_an_already_closed_channel
19
Basic Example with Range Over Channel
Shows how to use the range keyword to iterate over values received from a channel.
001_basic_example_range_over_channel
Multiple Goroutines Sending to a Channel
Demonstrates how multiple Goroutines can send data to a single channel and how to handle it.
002_multiple_goroutines_sending_to_a_channel
Buffered Channels with Range
Shows how to use buffered channels in conjunction with range to manage concurrent operations.
003_buffered_channels_with_range
20
Simple Timer
Demonstrates how to create and use a basic timer in Go.
001_simple_timer
Stop Timer
Shows how to stop a timer before it triggers.
002_stop_timer
Reset Timer
Explains how to reset a timer to its initial state.
003_reset_timer
Using time.After
Demonstrates how to use the time.After function to create timers.
004_using_time_after
Timer with Select
Shows how to use timers with the select statement for time-based control flow.
005_timer_with_select
21
Basic Ticker
Demonstrates how to create and use a basic ticker in Go.
01_basic_ticker
Stop Ticker
Shows how to stop a ticker before it triggers the next tick.
02_stop_ticker
Ticker with Select
Illustrates how to use the select statement with a ticker for time-based control flow.
03_ticker_with_select
Reset Ticker
Explains how to reset a ticker to its initial state.
04_reset_ticker
Ticker with Limited Ticks
Shows how to stop a ticker after a specific number of ticks.
05_ticker_with_limited_ticks
22
Basic Worker Pool
Demonstrates how to implement a simple worker pool in Go.
001_basic_worker_pool
Worker Pool with Buffered Channels
Shows how to implement a worker pool with buffered channels.
002_worker_pool_with_buffered_channels
Worker Pool with Error Handling
Illustrates how to handle errors in a worker pool.
003_worker_pool_with_error_handling
Dynamic Worker Pool
Explains how to create a dynamic worker pool that adjusts based on workload.
004_dynamic_worker_pool
Rate-Limited Worker Pool
Shows how to limit the rate at which jobs are processed in a worker pool.
005_rate_limited_worker_pool
23
Basic WaitGroup
Demonstrates basic usage of `sync.WaitGroup` for synchronizing goroutines.
001_basic_waitgroup
WaitGroup with Anonymous Functions
Shows how to use `sync.WaitGroup` with anonymous functions in goroutines.
002_waitGroup_with_anonymous_functions
WaitGroup with Multiple Waits
Illustrates using `sync.WaitGroup` to manage multiple stages of goroutines.
003_waitgroup_with_multiple_waits
WaitGroup with Error Handling
Demonstrates using `sync.WaitGroup` with error handling in workers.
004_waitgroup_with_error_handling
24
Basic Rate Limiter
Demonstrates a basic implementation of a rate limiter.
001_basic_rate_limiter
Rate Limiter with Burst Capacity
Shows how to implement rate limiting with burst capacity.
002_rate_limiter_burst_capacity
Custom Rate Limiter Using `time.After`
Demonstrates custom rate limiting using `time.After` for more flexibility.
003_custom_rate_limiter_using_time_after
Rate Limiter with `context.Context`
Shows how to implement rate limiting using `context.Context` for request cancellation and control.
004_rate_limiter_with_context
Rate Limiter with `time.NewTicker`
Demonstrates rate limiting using `time.NewTicker` for better control over the ticker's lifecycle.
005_rate_limiter_with_time_newticker
25
Basic Atomic Counter Using `sync/atomic`
Demonstrates a simple atomic counter using the `sync/atomic` package.
001_basic_atomic_counter_using_sync_atomic
Atomic Counter with Decrement and Compare-And-Swap
Shows an atomic counter with decrement and compare-and-swap operations.
002_atomic_counter_with_decrement_and_compare_and_swap
Atomic Flag Using `sync/atomic`
Demonstrates the use of an atomic flag for state management with `sync/atomic`.
003_atomic_flag_using_sync_atomic
Atomic Counter with Load and Store Operations
Shows how to use atomic load and store operations with counters.
004_atomic_counter_with_load_and_store_operations
Atomic Pointer
Demonstrates how to atomically load and store a pointer value.
005_atomic_pointer
26
Basic Sorting with Integers
Demonstrates basic sorting operations with integer slices.
001_basic_sorting_with_integers
Sorting Strings
Shows how to sort slices of strings.
002_sorting_strings
Sorting by Custom Slice
Demonstrates sorting a slice based on custom sorting logic.
003_sorting_by_custom_slice
Sorting by Multiple Fields
Shows how to sort slices based on multiple fields.
004_sorting_by_multiple_fields
Sorting a Custom Type Using `sort.Interface`
Demonstrates sorting a custom type by implementing the `sort.Interface`.
005_sorting_a_custom_type_using_sort_interface
Reverse Sorting
Shows how to sort slices in reverse order.
006_reverse_sorting
Sorting with Custom Comparator Function
Demonstrates sorting with a custom comparator function.
007_sorting_with_custom_comparator_function
Sorting a Map by Keys
Shows how to sort a map by its keys.
008_sorting_a_map_by_keys
Sorting a Map by Values
Demonstrates sorting a map by its values.
009_sorting_a_map_by_values
Concurrent Sorting with Goroutines
Shows how to use goroutines to sort slices concurrently.
010_concurrent_sorting_with_goroutines
27
Basic Example of Defer
Demonstrates the basic usage of the `defer` keyword in Go.
001_basic_example_of_defer
Multiple Defer
Shows how multiple `defer` statements work and their order of execution.
002_multiple_defer
Defer with Function Call
Demonstrates using `defer` with function calls.
003_defer_with_function_call
Basic Example of Panic
Shows a basic example of using the `panic` function in Go.
004_basic_example_of_panic
Panic with Recover
Demonstrates how to use `recover` to handle panics and prevent program crashes.
005_panic_with_recover
Panic with Defer
Shows how `defer` can be used alongside `panic` for resource cleanup.
006_panic_with_defer
Chain Panic and Defer
Demonstrates chaining of `panic` and `defer` statements to understand their interactions.
007_chain_panic_and_defer
Defer Log Functions Exit
Shows how to use `defer` to log function exits and track function calls.
008_defer_log_functions_exit
Closing Resources with Defer
Demonstrates how to use `defer` to ensure resources like files are closed properly.
009_closing_resources_with_defer
Defer with HTTPS Requests
Shows how to use `defer` to handle HTTP response body cleanup after making requests.
010_defer_with_https_requests
28
String Manipulations
Demonstrates various string manipulation techniques in Go.
001_string_manipulations
29
Conditional Logic in Templates
Demonstrates using conditional logic inside Go templates.
001_conditional_logic_in_templates
Loops in Templates
Shows how to use loops to iterate over data in Go templates.
002_loops_in_templates
Template Functions
Demonstrates using built-in and custom functions in Go templates.
003_template_functions
Nested Templates
Shows how to use nested templates for organizing reusable templates.
004_nested_templates
Template with Data Formatting
Demonstrates formatting data within Go templates, such as dates and numbers.
005_template_with_data_formatting
Complex Structs and Template Actions
Shows how to handle deeply nested struct fields in Go templates using the `with` action.
006_complex_structs_and_template_actions
30
Basic JSON Encoding and Decoding
Demonstrates basic JSON encoding in Go.
001_basic_encoding_json
Basic JSON Decoding
Shows how to decode JSON into Go structs.
002_basic_decoding_json
Handling Nested JSON Structures
Demonstrates handling nested JSON structures in Go.
003_handling_nested_json_structures
Working with JSON Arrays
Shows how to work with JSON arrays in Go.
004_working_with_json_arrays
Custom JSON Field Names
Demonstrates how to use custom JSON field names in Go structs.
005_custom_json_field_names
Omitting Empty Fields
Shows how to omit empty fields from JSON encoding.
006_omitting_empty_fields
Custom JSON Marshaling and Unmarshaling
Demonstrates custom marshaling and unmarshaling of JSON data.
007_custom_json_marshaling_and_unmarshaling
Decoding JSON into a Map
Shows how to decode JSON into a map with string keys and interface values.
008_decoding_json_into_a_map_string_interface
Decoding JSON with Unknown Fields
Demonstrates how to decode JSON while capturing unknown fields into a map.
009_decoding_json_with_unknown_fields
Streaming JSON Encoding
Shows how to use streaming JSON encoding with indentation.
010_streaming_json_encoding
### Technologies
---
- Go 1.23.0
### Prerequisites
Ensure Go is installed on your system
```
https://golang.org/dl/
```
### Contributors
- [Sercan Noyan GermiyanoÄŸlu](https://github.com/Rapter1990)