go

module
v0.0.0-...-2c97fc3 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 26, 2021 License: MIT

README

Exploring Golang features Go Report Card

You can incorporate these code snippets into your larger programming modules. This repository is viewable on sourcegraph.com.

Go

Contents

Name Description
00_persisting_go Installing Go, persisting on systemd, Upstart
01_data_type type, error, recursion, reference, sort, switch, type assertion
02_mongodb_aggregate_cli aggregate data from mongodb displayed in CLI
03_mongodb_find_sort_cli MongoDB Find All, Sort commands, results in CLI
04_get_url_variable Get "FormValue" variable from URL
05_mongodb_crud_cli Insert, Update, Drop, Find, Index commands, results in CLI
06_ajax_send_receive Two Ajax examples: read and write
07_one_page_template GO code and HTML template in one file
08_gowiki Simple wiki example
09_todo_list_html Todo list with struct and HTML template.
10_mongodb Mongodb query results on HTML page in one go file.
11_socket_send_receive Send/receive text between client/server via socket.
12_mgo_pipeline Mongodb pipeline query saved in one go file
13_qr_barcode QR code generator displays PNG image in browser.
14_read_txt_file Compare ways to process TXT file
15_png_or_svg_barchart generate bar chart, PNG or SVG
16_drop_down_menu_form Form /w drop down menu, template with sub-templates
17_mysql_user_login MySQL for user registration, login, and user list.
18_cookie_authentication Authentication with cookies.
19_os_global_variables Displaying all global system variables.
20_mongodb_crud Mongodb CRUD with REST using httprouter & HTML templates
21_httprouter_template html template with httprouter and ServeFiles
22_mongodb_crud_rest_html Mongodb CRUD with REST using httprouter & HTML templates
23_file_uploader Upload file and save on server
24_calculate_time Time related features
25_https_static_files Serve HTTP and HTTPS w/ NotFound for static files
26_url_not_found_handler Custom Not Found handler.
27_mongodb_bulk_upsert Mongodb bulk insert from TXT file
28_markdown Generate Markdown using blackfriday
29_go_crud_json_api REST API using JSON with httprouter. JavaScript is used to view, create, edit, and delete records.
30_mongodb_crud_json_api REST API using JSON, httprouter, and toml, i/o to MongoDB
31_send_email Send email with attachment
32_colorful_cli Create colorful CLI
33_testing Testing package example
34_channels Buffered/unbuffered channels, forking channel, ranging over closed channel.
35_mongodb_pipeline_page One page MGO aggregation with pipeline
36_concurrency_channel Channel, waiting, concurrency, sleep, close, count, queue
37_html_template Simple html template with Go
38_url_request_JSON Convert data to/from JSON, get and parse file from URL
39_read_directory_content List files adn sub folders in a given folder
40_cron_scheduler Schedule processes
41_cli_arguments Run cli utility with options using os.Args
42_upload_many_files Upload multiple files from browser form to folder on a server.
43_resize_jpg_png_image Resize images
44_csv_file Read and write to CSV file. Parse CSV file to slice of objects.
45_image_exif_data Get image attributes for each image in a folder.
46_video_capture Capture video from web camera and display live.
47_download_slice_as_csv Download link generates CSV or Tab Delimited file that can be saved localy on your computer.
48_keyboard_driver Testing IOT devices
49_constructor Example creating new package with allocation/constructor that accepts multiple types using interface. Experimenting with Readers and Writers.
50_golf_framework A fast, simple and lightweight micro-web framework for Go
51_blur_image Blur, Rotate, and Generate Thumbnails.
52_jpg_image_watermark Add watermark to image
53_regular_expression Validation, Find and replace, security
54_rotate_image Image rotation in degrees from 1 to 360.
55_html_template_std_lib HTML template using standard library packages
56_html_formatter Work in similar fashion as go fmt, but on HTML files.
57_valid_interface Interface as parameter.
58_GO_HTML_template Go HTML template examples.
59_zip_and_unzip Example for archive/zip package.
60_http_response_as_file HTTP handler responds with a copied file.
61_logging_middleware Save logs and error logs to file or database.
62_download_progress Progress shown on CLI.
63_graphql_todo_example One file GraphQL example.
64_
65_books_example MongoDB CRUD example.
66_server_sent_events Live logs (events) from server to browser using the EventSource HTML interface.
67_stringutil Reverse a string, test included
68_iota Iota identifier is used in const declarations to simplify definitions of incrementing numbers.
69_JSON JSON input/output examples

The proper way to copy a slice

package main

import "fmt"

func main() {
	a := []string{"a", "b", "c", "d"}
	e := make([]string, len(a))
	copy(e, a)
	fmt.Println(e)
}

How to find out the data type?

// Figure out what type it is: maps, slices, or arrays!

package main

import (
	"fmt"
	"reflect"
)

func main() {

	// Declaring local variables
	map1 := map[string]string{"name": "John", "desc": "Golang"}
	map2 := map[string]int{"apple": 23, "tomato": 13}
	slice1 := []int{1, 2, 3}
	array1 := [3]int{1, 2, 3}
	// var m map[string]int
	// m = make(map[string]int)
	// More info Here: https://blog.golang.org/go-maps-in-action

	// Type, such as map[string]string, []int, [3]int
	fmt.Println("map1:", reflect.TypeOf(map1))
	fmt.Println("map2:", reflect.TypeOf(map2))
	fmt.Println("slice1:", reflect.TypeOf(slice1))
	fmt.Println("array1:", reflect.TypeOf(array1))

	// Value, such as map, slice, array.
	fmt.Println("map1:", reflect.ValueOf(map1).Kind())
	fmt.Println("map2:", reflect.ValueOf(map2).Kind())
	fmt.Println("slice1:", reflect.ValueOf(slice1).Kind())
	fmt.Println("array1:", reflect.ValueOf(array1).Kind())

	// True/False statement inside Printf
	fmt.Printf("%v is a map? %v\n", map1, reflect.ValueOf(map1).Kind() == reflect.Map)
	fmt.Printf("%v is a map? %v\n", map2, reflect.ValueOf(map2).Kind() == reflect.Map)
	fmt.Printf("%v is a map? %v\n", slice1, reflect.ValueOf(slice1).Kind() == reflect.Map)
}

Go

In Go, the code does exactly what it says on the page.

It’s the simplicity that makes Go awesome.

Go: Statically typed yet expressive language with a focus on concurrency.

Go strives to keep things small and beautiful.

What I would have done in Python, Java, Ruby, PHP, C, C# or C++, I’m now doing in Go.

The code must be like a piece of music.

Code less, compile quicker, execute faster.

Any of your code that you haven’t looked at for 6 or more months may as well have been written by someone else.

General guideline: accept interfaces, return structs

Go is simple but not easy.

TODO :

  • MongoDB connection
  • MySQL connection
  • Resize Images
  • Set/Get Image tags
  • SQLite connection
  • Postgres connection
  • React frontend

Directories

Path Synopsis
00_persisting_go
random
Do something so often until condition is met
Do something so often until condition is met
Quick Sort in Golang
Quick Sort in Golang
todos.go
Setting up authentication using standard library only.
Setting up authentication using standard library only.
sess
Package sess manages user registrations, records, and sessions.
Package sess manages user registrations, records, and sessions.
dao
36_concurrency_channel
channel
~~~~~~~~~~~~~~~~~~~~~~~~~~~~// Generator that counts to n // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
~~~~~~~~~~~~~~~~~~~~~~~~~~~~// Generator that counts to n // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
concurrency_wait_groups
Run the function once, and never again.
Run the function once, and never again.
graphics/detect
Package detect implements an object detector cascade.
Package detect implements an object detector cascade.
graphics/interp
Package interp implements image interpolation.
Package interp implements image interpolation.
replace special characters with dash
replace special characters with dash
web interface using Go standard library only
web interface using Go standard library only
other
text/template is a useful text generating tool.
text/template is a useful text generating tool.
saving logs to text file
saving logs to text file
Package stringutil contains utility functions for working with strings.
Package stringutil contains utility functions for working with strings.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL