summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorLeonid Shevtsov <leonid@shevtsov.me>2016-10-31 19:08:32 +0200
committerven <vendethiel@hotmail.fr>2016-10-31 18:08:32 +0100
commit5f9d8fe4e0f8f70855708cec9ac6713feb46eaa9 (patch)
tree333d411440e8be6567606b8cb6de3ffcd0efd367
parent092b7a69b103c9fbe7bf06ad05f4051c19575db2 (diff)
[go] added practical examples for the underscore (#2414)
* go: added practical examples for the underscore * Example of using underscore to discard the error * Example of using underscore to loop over values of a slice * Incidentally, example of writing to a file * go: Adjust justification for ignoring error value
-rw-r--r--go.html.markdown14
1 files changed, 14 insertions, 0 deletions
diff --git a/go.html.markdown b/go.html.markdown
index 7b007bab..f097caeb 100644
--- a/go.html.markdown
+++ b/go.html.markdown
@@ -11,6 +11,7 @@ contributors:
- ["Jose Donizetti", "https://github.com/josedonizetti"]
- ["Alexej Friesen", "https://github.com/heyalexej"]
- ["Clayton Walker", "https://github.com/cwalk"]
+ - ["Leonid Shevtsov", "https://github.com/leonid-shevtsov"]
---
Go was created out of the need to get work done. It's not the latest trend
@@ -39,6 +40,7 @@ import (
"io/ioutil" // Implements some I/O utility functions.
m "math" // Math library with local alias m.
"net/http" // Yes, a web server!
+ "os" // OS functions like working with the file system
"strconv" // String conversions.
)
@@ -133,6 +135,14 @@ can include line breaks.` // Same string type.
// Unused variables are an error in Go.
// The underscore lets you "use" a variable but discard its value.
_, _, _, _, _, _, _, _, _, _ = str, s2, g, f, u, pi, n, a3, s4, bs
+ // Usually you use it to ignore one of the return values of a function
+ // For example, in a quick and dirty script you might ignore the
+ // error value returned from os.Create, and expect that the file
+ // will always be created.
+ file, _ := os.Create("output.txt")
+ fmt.Fprint(file, "This is how you write to a file, by the way")
+ file.Close()
+
// Output of course counts as using a variable.
fmt.Println(s, c, a4, s3, d2, m)
@@ -211,6 +221,10 @@ func learnFlowControl() {
// for each pair in the map, print key and value
fmt.Printf("key=%s, value=%d\n", key, value)
}
+ // If you only need the value, use the underscore as the key
+ for _, name := range []string{"Bob", "Bill", "Joe"} {
+ fmt.Printf("Hello, %s\n", name)
+ }
// As with for, := in an if statement means to declare and assign
// y first, then test y > x.