Golang topics Page
Golang Topics
Return to Golang, Programming topics, Google topics
* Effective Go - Effective Golang - https://golang.org/doc/effective_go.html
* Golang Wiki - Go Wiki - https://github.com/golang/go/wiki
* Go Programming Language Specification - Go Language Specification - Go Specification - Go Spec - - Golang Spec - https://golang.org/ref/spec
* Golang Packages - Go Packages - https://golang.org/pkg
"Go is an open source programming language that makes it easy to build simple, reliable, and efficient software." Fair Use Source: https://go.googlesource.com/go
"Go is a programming language built to resemble a simplified version of the C programming language. It Go compilation | compiles at the machine level. Go was created at Google in 2007 by Robert Griesemer, Rob Pike, and Ken Thompson." Fair Use Source: https://github.com/topics/golang
Say Golang or Go?
A
* Golang Abstract Syntax Notation One (ASN.1)
* Golang abstract type
* Golang Accept header
* Golang access log
* Golang addition function
* Golang Add method
* Golang address
* [[Golang addUp function
* Golang after, triggering timeout with
* Golang Alarm struct
* Golang Apache web server
* Golang APIs
* Golang append builtin function
* Golang architecture
* Golang Args method
* Golang arguments
** Golang arguments - accessing
** Golang arguments - defined
** Golang arguments - number of
** Golang arguments - passing
** Golang arguments - passing functions as
** Golang arguments - raw command-line
** Golang arguments - variable number of
* Golang arithmetic operators
* Golang arrays
** Golang arrays - data types held by
** Golang arrays - definition and overview of
** [[Golang arrays - elements, accessing, 81
** Golang arrays - initializing
** Golang arrays - resizing
** Golang arrays - using, criteria for
** Golang arrays - working with
* Golang ASCII encoding standard
* [[Golang assignment operator, 119, 126
* Golang associative array (term) - Golang associative array
* Golang automating workflow
B
* Golang bad data
* Golang BBC homepage
* Golang benchmarking
* Golang binaries
* Golang binary files, downloading
* Golang bits (defined)
* Golang blocking and flow control
* Golang blocking code
* Golang blocks
* Golang Booleans and Golang Boolean statements
** Golang Booleans - constructing
** Golang Booleans - converting to and from
** Golang Booleans - evaluating
** Golang Booleans - if statements and
** Golang Booleans - implementing
** Golang Booleans - logical comparisons used in
** Golang Booleans - time applications
* Golang brace brackets
* Golang breakpoint
* Golang breakpoint (defined)
* Golang buffer
* Golang buffered channels
* Golang buffered messages
* Golang bugs
* Golang builtin function
* Golang bytes buffer
* Golang byte slice
* Golang bytes package
C
* Golang and C (programming language)
* Golang and C++ (programming language)
* Golang Camel Case
* Golang case, default
* Golang case, selecting execution of
* Golang case for identifiers
* Golang case sensitivity
* Golang cat command
* Golang Changelog file
* Golang Channels
* Golang chat
* Golang checksum, generating
* Golang Chrome DevTools
* Golang Chrome web browser
* Golang and C-like languages
* Golang code
** Golang code - compiling
** Golang code - documenting
** Golang code - examples of
** Golang code - executing concurrently
** Golang code - formatting
** Golang code - releasing
** Golang code - running
** Golang code - sharing
** Golang code - style, improving
** Golang code - writing versus third-party packages
* Golang command, exit status of
* Golang command-line arguments
* Golang command-line flags
* Golang command-line programs
* Golang comments, writing - Golang comments
* Golang commission rate
* Golang communication
* Golang comparison operators
* Golang compile method
* Golang compiler
* Golang compiler error
* Golang compile-time errors
* Golang compiling to different targets
* Golang computer processor
* Golang concurrency
* Golang concurrent operations
* Golang configuration
* Golang constants
* Golang constructor function
* Golang content-type header
* Golang content types
* Golang continue command
* Golang Continuous Integration environments
* Golang Coordinated Universal Time (UTC)
* Golang copy function
* Golang crash
* Golang cross-compiling
* Golang curl
* Golang current time
* Golang custom HTTP client
D
* Golang dash, single versus double
* Golang data
** Golang data - Golang bad
** Golang data - cleaning
** Golang data - extracting
** Golang data - finding
** Golang data - incoming, filtering
** Golang data - parsing
** Golang data - printing
** Golang data - reading
** Golang data - transforming
** Golang data - validation of
* Golang database drivers
* Golang databases
* Golang data elements, exporting
* Golang data record
* Golang data structures
* Golang data type
** Golang data type - accessing
** Golang data type - arrays holding more than one
** [[Golang data type - of Channels, 170
** Golang data type - defined
** Golang data type - mapping
** Golang data type - method set associated with
** Golang data type - names referencing
** Golang data type - in struct
* Golang debugging
adding lines during, 218-219
definition and overview of, 213
delve, using for, 221-224
fmt package, using for, 219, 222
GNU Debugger, using for, 224-225
of HTTP requests, 266-268
logging role in, 214, 216
test role in, 226
tool, selecting, 225
of web servers, 246
DecodeFile function, 301
default case, 61-62
default value, 91-93, 100
defer (defined), 53
defer statement, 66-69, 297
delve, 221-226
dependencies, 178-180, 183, 340
Developer Tools, 142-143
dictionary (term), 78, 80
directory, listing, 290, 295-296
disasters, handling, 129
disk, reading from, 140, 142, 154
distributed programming, 1
Docker, 334-336, 339-340
documentation, 195-198
dot notation
data accessing with, 84, 90, 101
sphere, working with, 104
values, assigning with, 85-87
dynamically typed languages, 13-14, 26
E
echo function, 222-223, 225
elapsed real time (term), 317
elements, forming collection of, 21
else if statement, 57-58, 60-61, 68
else statement, 55-57
encoding/json package, 285, 287
encoding standards, 122
English-language special characters, 116, 122-123
environment, 8, 329-331, 340
Errorf method, 133
error log, 213
errors
checking, 137
creating, 132-133
formatting, 133-134
handling, 15, 129-131, 137-138
logging, 214-215
returning from function, 134-135
type, understanding, 132
and usability, 135-136
writing, 242
errors package, 132-133
exit codes and meanings, 228
exiting, preventing process from, 163
F
fatal error, 215
file
as block, 35, 40
configuration, managing with, 299-300
copying, 296-298, 303
creating, 290, 292-294
deleting, 298-299
downloading, 336-338
existence, checking on, 303
importance of, 289-290
managing in directory, 227
name, 295-296
reading, 130-131, 140, 290-291
reformatting, 187
writing logs to, 216-217
writing to, 290, 294-295
file permissions, 213, 292-294, 295-296, 303
FindAllString function, 313
flag package, 232-235, 239
FlagSets, 237
floats, 20-21
flow control, 161-163
fmt package, 133, 219-222, 225-226
for loop, 167-169, 171
for statement, 62-66
4-bit integers, 18-19, 26
404s, 248-249
framework libraries, 257
FreeBSD, 4
French, Renee, 10
func keyword, 42
function
arguments and types, modifying for, 51
creating and calling, 43-44
definition and overview of, 41-42
errors, returning from, 134-135
method compared to, 101, 105, 113
passing as argument, 52
passing as value, 49-50
results, returning, 42-45
functional tests, 200
function arguments, 164
function signature, 41, 46-47
G
gdb, 224-225
GET requests, 255-258, 261-262, 266, 272
git command, 235
Github account, 8
Github API, 273, 285
GMT, 326
GNU Debugger, 224-225
GOARCH environment variable, 331
go build, 9-11, 229-230
go clean, 9
Go (Golang) description and overview, 1, 3-4
godoc, 192-197
GoDoc site, 197
go env command, 329-330, 340
gofmt
conventions, 197
golint compared to, 190-191
overview of, 186-187
plugins running on, 188
remembering to use, 196
go get command, 177-179, 183, 338-339
Go Gopher, 10-11
go install, 242
go keyword, 151-152
golint, 190-192, 196
“Goodbye Cruel World” value, 223, 225
Google, 3-4
Google Chrome Developer Tools, 260
GOPATH variable, 6-8
Go projects, directory structure for, 6-7
Goroutines
advantages of, 139, 153-154
Channels compared to, 171
communications between, 155-156
communication with, 159, 168
concurrent operations, handling with, 145, 161
defining, 152
execution, pausing, 327
flow control alternatives to, 163
HTTP requests, aid in making, 271
latency, managing with, 147-152
managing, 156-157
go run, 9-11
go set, 242
go test command, 201
got want pattern, 203-204
graphical user interfaces (GUI), 227
greeting, returning, 202-204
Greeting function, 204-206
Griesemer, Robert, 3
guessing game, 218-219
H
Half function, 135
HandleFunc method, 244, 247
Handler, 248-249
handler functions, 247-249
hash (term), 78, 80
header, setting, 249-250
“Hello World” file, 240-241
HelloWorld function, 244, 252
“Hello World” program, 8-9, 173
“Hello World” value, 223
“Hello World” web server, 243-249
help text, 234-239
html package, 315
HTTP (Hypertext Transfer Protocol)
complexity of, 271
definition and overview of, 259-261
JSON received over, 285-286
scraping, 311-312, 315
HTTP clients, 267, 271-272
HTTP header, 250
http package, 257
HTTP requests, 259-261, 264-268, 271
HTTP servers
creating, 243-245, 249-250, 253-254
data and requests sent to, 255-258
response to clients, 251
HTTPS server, 258
I
identifiers, uppercase versus lowercase letters starting, 183
idiomatic Go
defined, 185
error handling and, 130-131
golint aid in learning, 191
interface naming, 198
idiomatic variable, 33
if statement, 53-55, 69, 219
import statement, 174, 176
incorrect type, passing, 16-17
index, accessing array element with, 81
init statement, 63-64
inner blocks, 34
inputs and outputs, 228-229
installing Go, 4-8
integers, 15-16, 18-20, 45-46
integration tests, 200
interfaces, 109-113, 189, 198
international characters, 122-123, 127
interpreted string literals, 115, 116-117, 127
ioutil package, 290-298, 303
J
Java (programming language), 10, 138, 152, 192-193
javadoc, 192-193
JavaScript (programming language), 4, 13, 15, 286-287
JSON
advantages of, 286
APIs, 275
data posted as, 264
data types, 283-285
decoding, 281-282, 286
description and overview of, 273-274
encoding, 286
fields, mapping, 287
files, 299-300
HTTP, received over, 285-286
HTTP server sending, 249-250, 259
requesting data as, 267-268
string, 263
TOML compared to, 301, 303
using with Go, 275-281
K
key names, 278
L
languages, non-English, 126, 204-206
languages, programming, 9, 13, 89, 155-156
See also specific language, e.g.: Python (programming language)
latency, 147-152
lexical (defined), 33-34
lexical scoping, 33-34
LICENSE file, 182
Linux, 4-5, 7-8, 340
list command, 225
ListenAndServe method, 244, 258
ListenAndServeTLS method, 258
logging, 213-217, 226
logical operators, 59-60
log package, 215-216, 226
looking for a needle in a haystack, 305-306
looping, 62-63
lowercase, 124, 174, 183, 188, 278
M
macOS, 4, 5, 7-8
main package, 174
make builtin function, 80
Makefile, 196-197
malicious web server, 338
maps, 78-80
Marshal function, 275-276
MatchString function, 306
mathematical operations, 13, 21
math package, 189-190
memory, 25, 39, 155-156
memory address, 35-38
messages and messaging
advantages of, 156
to Channels, 157-160, 171
between Goroutines, 170
response to, 167
methods, 101-103, 105-109, 113-114
method sets, 103-105
monotonic clock (concept), 317
multiplayer games, 142
multiple defer statements, 67-69
multiple values, function returning, 44-45, 51
multiple variables, 220
MustCompile function, 316
MySQL database, 112-113
N
named return values, 46-48
names, key, 278
names beginning with uppercase letter, 100
naming conventions, 188-190
nesting structs, 89-91, 99
.NET, 178
net/http package, 243-244, 261-262, 264
network, 141, 154
network latency, 147-150, 152
network programming, 1, 51
Network Time Protocol (NTP), 318-319, 326-327
NewAlarm function, 92
NewDecoder function, 285
NewFlagSet, 236, 242
new keyword, 87-88
NewRequest method, 272
Nginx, 152, 213-214
Node.js, 3, 152, 178, 186
non-blocking code, 147
NotFound method, 249
numbers, determining if odd or even, 42
numeric notation, 292-293
numeric types, 18-19, 21, 25
O
object-oriented language, 112
omitempty struct tag, 287
OpenFile function, 297
Open function, 297
Open Source blogging engine, 214
Open Source Licenses, 182
Open Source projects, 186, 197
operating system, 227, 329
operators, 68
OR logical operator, 69
os package, 230, 234, 303
outer blocks, 34
P
package level block, 40
package managers, 178, 339
packages, 173-182
panic, using, 136-138
parallelism, 141-142
Pascal Case, 189
pausing process, 320, 327
permissions, 213, 292-296, 303
Pi constant, 174
Pike, Rob, 3, 4, 10, 122, 138, 142, 154
Plan 9 operating system, 3
platform, 331-332
pointer, 35-38, 96-100, 105-109
pointer reference, 106-109, 113
polymorphism (defined), 113-114
POSIX compliance, 239
postData variable, 263
POST requests, 255-258, 262-264, 272
post statement, 63-64
PowerOn method, 109-111
Printf function, 220
private values, 95
process, running indefinitely, 162-163
programming languages, 9, 13, 89, 155-156
See also specific language, e.g.: Python (programming language)
program speed, factors affecting, 140-141, 151-152
public values, 95
Python (programming language), 3-4, 13, 178
Q
Quickfix menu, 191
R
range clause, 64-66
raw command-line arguments, 229-230
raw string literals, 117-118, 235
Readfile function, 130-131, 291
README file, 182
real time (term), 317
receiver function, 160
recursive functions, 48-49, 51
reflect package, 22-23, 26
regex package, 306
regular expressions
case sensitivity in, 315
data, parsing with, 311-315
data, transforming with, 309-311
definition and overview of, 305-307
end of line, character signifying, 316
strings package compared to, 315
syntax, 307-308, 315
validation, using for, 308-309
Remove function, 298
request, setting on custom header, 271
requests, types of, 253-254, 256
requests and responses, examining, 245-247
response, status code of, 271
response speed, factors affecting, 269
responseTime function, 148
ResponseWriter, 258
return values, 134, 138
Reverse function, 176
Robot interface, 109-112
robots.txt file, 214
routing, 247, 257
Ruby (programming language), 4, 178
rune literals, 116-118
runtime errors, 213
S
sayHello function, 14-15
Schaaf, Herman, 127
scope (defined), 33
security issues, 183, 255, 337, 338, 340
select statement, 164-171
sequential tasks, 139-142
server security issues, 255-258
SGOPATH, 177, 183
short functions, 51
shorthand variables, 29-30
short variable, 32, 40
short variable assignment, 88-90
signed integers, 19-20
single result, function returning, 42-44
64-bit floats, 21
64-bit integer, 20
sleeping, 319-320, 327
slice
adding elements to, 74-76, 81
of bytes, 291
copying elements from, 77
defined, 73, 78
deleting elements from, 76, 80
length limit, 80
methods associated to, 114
numbers variables containing, 45
testing, use in, 206
using, criteria for, 80-81
working with, 73-74
slowFunc function, 144-146, 158
slowFunc method, 158-159
software, sharing, 339-340
sort comand, 227-228
source code, 39
space, trimming, 125-126
special characters, 116, 122-123, 127
Specification, 199
spheres, 103-104
Sqrt function, 189-190
square root, 190
Standard Error, 242
Standard Input (defined), 229
Standard Output (defined), 229
statically typed languages, 14, 26
strconv package, 23-24
string literals, 115-118, 127
strings
array elements, assignment to, 72
concatenating, 118-121, 126-127, 207-209
converting to and from, 21, 23, 120, 174
creating, 121, 127, 291
definition and overview of, 15, 21, 122-123, 126
format, representing time in, 322-323
lowercase, changing, 124, 174
number types distinguishing from, 25
parsing, 322-323
as programming building block, 115
searching for, 306-307
variable initializing with type of, 27-28
working with, 123-126
written to file, 294
strings package, 125, 174-175, 195, 315
stringutil package, 176, 179
strongly typed languages, 13-14, 26
struct
checking type of, 94-95
comparing, 93-95
copying, 96-99, 100
creating, 99, 206, 276, 286
data encoded to and from, 287
data type in, 100
decoding to JSON, 281-282
default value, creating for, 91-93
definition and overview of, 83-85
empty, encoding to JSON, 280-281
empty fields, omitting, 280-281, 287
encoding as JSON, 276-278
equivalence, testing for, 94
exporting, 100
initializing, 84-89
nesting, 89-91, 99
tags, 278-280, 287
time, 323-325
values, printing, 220-221
subcommands, 235-239
Sub method, 324
subslice, 80
substring, searching for, 124-125
switch statements, 60-62, 68, 164
systems programming, 1
T
tab, representation of
table of binary operators
table of bitwise operators
table of comparison operators
table of escape sequences
table of keywords
table of predeclared names
table of Printf verbs
table of UTF-8 encodings
table, Sizeof
table-driven testing
table tests
tag, struct field
tagless switch statement
tags, build
targets
TCP socket
tax code
techniques, in-place slice
tempconv example
tempconv example package
temperature conversion example
tempflag example
template, | in
template action, {{range}}
template API
template, dot . in
template.Funcs method
template.HTML type
template.Must function
template.New function
template.Parse method
temporary directory
temporary file
Terraform
test assertion
test, black-box
test, brittle
test, character
test coverage
test dependency, cyclic
Test-Driven Development (TDD)
test, echo
test failure message
test files, placement of
Test function
test, integration
test of word example
test package, external
test, string
test, white-box
_test.go file
testing
testing a command
testing package
testing, randomized
testing, table-driven
testing.B type
testing.T type
(*testing.T).Errorf method
(*testing.T).Fatal method
tests, running
tests, writing
tests, writing effective
text editor
text/scanner package
text string
text/tabwriter package
text/template package
third-party dependencies
third-party Go plugins
third-party packages
third-party tools
Thompson, Ken
Thompson, Ken, Preface
thread
thread-local storage
three-D surface figure
thumbnail example
thumbnail example package
thumbnail sequence diagram
ticker, using
time
time package
time.After function
time.AfterFunc function
time.Duration type
time.Minute constant
time.Now function
time.Parse function
time.Second constant
time.Since function
time.Sleep method
time.Tick function
time.Time type
time.Time.Format method
timeout
timers
time structs
time zone differences
32-bit floats
32-bit integer
title example
title function
titles, writing to terminal
token-based decoder API
token-based XML decoding
ToLower function
TOML files
tool, go
tool, go doc
tool, godoc, Preface
tool, gofmt
tool, goimports
tool, golint
topological sort algorithm
topoSort example
ToUpper method
trace example
trace, stack
tree, binary
treesort example
triangle
true boolean constant
tuple assignment
tuple assignment
types
checking
converting between
type <-chan T, receive-only channel
type chan<- T, send-only channel
number of
overview of
type switch, case in
type switch, default case in
type, abstract
type, aggregate
type, array
type assertion
type assertion, interface
type assertion, ok value from
type, bool
type, bufio.Scanner
type, byte
type, bytes.Buffer
type, Celsius
type, chan
type, channel
type, complex
type, composite, Preface
type composition, Preface
type, concrete
type declaration
type, displaying methods of a
type, empty interface
type, error built-in
type, Fahrenheit
type, function
type, http.HandlerFunc
type, http.Request
type, http.ResponseWriter
type, int
type, interface{}
type, interface
type, interface{}
type, interface dynamic
type, json.Decoder
type, json.Encoder
type keyword
type, map
type, method receiver
type mismatch
type, named
type, net.Conn
type, net.Listener
type, numeric
type, *os.File
type, os.FileInfo
type, os.LinkError
type, os.PathError
type, recursive
type, reference
type, reflect.StructTag
type, reflect.Type
type, reflect.Value
type, rune
type, slice
type, sort.IntSlice
type, strings.Reader
type, strings.Replacer
type, struct
type, struct{}
type switch statement
type, sync.Mutex
type, sync.Once
type, sync.RWMutex
type, sync.WaitGroup
type, syscall.Errno
type, template.HTML
type, testing.B
type, testing.T
type, time.Duration
type, time.Time
type, uint
type, uintptr
type, underlying
type, unidirectional channel
type, unnamed struct
type, unsafe.Pointer
type, url.URL
types, untyped constant
working with
U
UDP socket
Unicode encoding scheme
Unit Tests
uint type
uintptr type
unary operator -
unary operator +
unbuffered channel
undefined behavior
underlying array
underlying type
Unicode code point
Unicode escape
unicode package
unicode.IsDigit function
unicode.IsLetter function
unicode.IsLower function
unicode.IsSpace function
unicode.IsUpper function
Unicode replacement character
unicode/utf8 package
Unicode standard
unidirectional channel type
union, discriminated
universe block
Unix domain socket
UNIX operating system
The Unix Programming Environment (Thompson)
unmarshaling JSON
unnamed struct type
unnamed variable
unreachable statement
unsafe package
unsafe.AlignOf function
unsafe.Offsetof function
unsafe.Pointer conversion
unsigned integer (defined)
unsigned integer
unsafe.Pointer type
unsafe.Pointer zero value
unsafe.Sizeof function
uppercase
untyped constant types
unused parameter
URL
URL escape
url.QueryEscape function
url.URL type
urlvalues example
usability, errors and
User Story
UTF-8
UTF-8 encoding scheme
UTF-8 encodings, table of
utf8.DecodeRuneInString function
utf8.RuneCountInString function
utf8.UTFMax value
V
* V8 JavaScript engine
* Golang validation of data
* Golang value
** Golang value, accessing
** Golang value, addressable
** Golang value, assigning to data type
** Golang value, assigning to variable
** Golang value, call by
** Golang value, changing
** Golang value, default
** Golang value, error as
** Golang value, function
** Golang value, functions having multiple
** Golang value, interface
** Golang value, method
** Golang value, passing function as
** Golang value, passing variable as
** Golang value, private versus public
** Golang value, return
** Golang value, using
** Golang value, utf8.UTFMax
** [[Golang value reference
* Golang variable
** Golang variable, checking type of
** Golang variable confinement
** Golang variable, declaring
** Golang variable, definition and overview of
** Golang variable, heap
** Golang variable, http.DefaultClient
** Golang variable, inferring type of
** Golang variable, io.Discard
** Golang variable, io.EOF
** Golang variable lifetime
** Golang variable, local
** Golang variable, multiple
** Golang variable, os.Args
** Golang variable, scope, using
** Golang variable, stack
** Golang variable, struct, initializing using
** Golang variable, variable, unnamed
** Golang variable, zero value for
** Golang variables, escaping
** Golang variables, shared
** Golang variable-size stack
** Golang var declaration
* Golang variatic function
* Golang variadic function
* Golang var keyword
* Golang vector, bit
* Golang vendor folder
* Golang vendoring
* Golang Vim text editor
* Golang visibility
* Golang visit function
W
* Golang wait example
* Golang WaitForServer function
* Golang walkDir function
* Golang wall clock (term)
* Golang weather applications
* Golang web browsers
* Golang web crawler
* Golang web crawler, concurrent
* Golang web framework
* Golang web servers
** Golang web servers, developing and debugging
* Golang Western characters
* Golang while loop
* Golang white-box test
* Golang Wilkes, Maurice
* Golang Windows
* Golang Wirth, Niklaus, Preface
* Golang word example
* Golang word example, test of
* Golang WordPress site, login page of
* Golang workspace organization
* Golang Write, calling
* Golang writer lock
* Golang writing effective tests
* Golang WriteFile function
X
* Golang xkcd JSON interface
* Golang XML
* Golang XML decoding
* Golang XML (Extensible Markup Language)
* Golang (*xml.Decoder).Token method
* Golang xmlselect example
Z
* Golang zero length slice
* Golang zero value, array
* Golang zero value, boolean
* Golang zero value, channel
* Golang zero value, function
* Golang zero value, interface
* Golang zero value, map
* Golang zero value, named result
* Golang zero value, number
* Golang zero value, pointer
* Golang zero value, reflect.Value
* Golang 0644 permissions
* Golang 0700 permissions
* Golang zero value
* Golang zero value, slice
* Golang zero value, string
* Golang zero value, struct
* Golang zero value, unsafe.Pointer
External sites
* https://github.com/golang/go
* https://golang.org
* https://en.wikipedia.org/wiki/Go_(programming_language)
Wikipedia
{{wp>Go_(programming_language)}}
Bibliography
Golang Bibliography - Go Bibliography - Golang books - Go books
Fair Use Sources
Fair Use Sources:
* https://github.com/avelino/awesome-go
* The Go Programming Language by Alan Donovan and Brian Kernighan