From 881bb5d41ca723a2437304351d910a2612f1c066 Mon Sep 17 00:00:00 2001 From: Eli Bendersky Date: Tue, 15 Mar 2022 10:55:33 -0700 Subject: [PATCH] Remove collection-functions Now that we have generics, this example is not relevant. Updates #349 --- examples.txt | 1 - .../collection-functions.go | 113 ------------------ .../collection-functions.hash | 2 - .../collection-functions.sh | 7 -- public/index.html | 2 - public/recover | 4 +- public/string-functions | 2 +- 7 files changed, 3 insertions(+), 128 deletions(-) delete mode 100644 examples/collection-functions/collection-functions.go delete mode 100644 examples/collection-functions/collection-functions.hash delete mode 100644 examples/collection-functions/collection-functions.sh diff --git a/examples.txt b/examples.txt index a1e4ef36f..6772826d6 100644 --- a/examples.txt +++ b/examples.txt @@ -45,7 +45,6 @@ Sorting by Functions Panic Defer Recover -Collection Functions String Functions String Formatting Text Templates diff --git a/examples/collection-functions/collection-functions.go b/examples/collection-functions/collection-functions.go deleted file mode 100644 index 730644c57..000000000 --- a/examples/collection-functions/collection-functions.go +++ /dev/null @@ -1,113 +0,0 @@ -// We often need our programs to perform operations on -// collections of data, like selecting all items that -// satisfy a given predicate or mapping all items to a new -// collection with a custom function. - -// In some languages it's idiomatic to use [generic](http://en.wikipedia.org/wiki/Generic_programming) -// data structures and algorithms. Go does not support -// generics; in Go it's common to provide collection -// functions if and when they are specifically needed for -// your program and data types. - -// Here are some example collection functions for slices -// of `strings`. You can use these examples to build your -// own functions. Note that in some cases it may be -// clearest to just inline the collection-manipulating -// code directly, instead of creating and calling a -// helper function. - -package main - -import ( - "fmt" - "strings" -) - -// Index returns the first index of the target string `t`, or -// -1 if no match is found. -func Index(vs []string, t string) int { - for i, v := range vs { - if v == t { - return i - } - } - return -1 -} - -// Include returns `true` if the target string t is in the -// slice. -func Include(vs []string, t string) bool { - return Index(vs, t) >= 0 -} - -// Any returns `true` if one of the strings in the slice -// satisfies the predicate `f`. -func Any(vs []string, f func(string) bool) bool { - for _, v := range vs { - if f(v) { - return true - } - } - return false -} - -// All returns `true` if all of the strings in the slice -// satisfy the predicate `f`. -func All(vs []string, f func(string) bool) bool { - for _, v := range vs { - if !f(v) { - return false - } - } - return true -} - -// Filter returns a new slice containing all strings in the -// slice that satisfy the predicate `f`. -func Filter(vs []string, f func(string) bool) []string { - vsf := make([]string, 0) - for _, v := range vs { - if f(v) { - vsf = append(vsf, v) - } - } - return vsf -} - -// Map returns a new slice containing the results of applying -// the function `f` to each string in the original slice. -func Map(vs []string, f func(string) string) []string { - vsm := make([]string, len(vs)) - for i, v := range vs { - vsm[i] = f(v) - } - return vsm -} - -func main() { - - // Here we try out our various collection functions. - var strs = []string{"peach", "apple", "pear", "plum"} - - fmt.Println(Index(strs, "pear")) - - fmt.Println(Include(strs, "grape")) - - fmt.Println(Any(strs, func(v string) bool { - return strings.HasPrefix(v, "p") - })) - - fmt.Println(All(strs, func(v string) bool { - return strings.HasPrefix(v, "p") - })) - - fmt.Println(Filter(strs, func(v string) bool { - return strings.Contains(v, "e") - })) - - // The above examples all used anonymous functions, - // but you can also use named functions of the correct - // type. - fmt.Println(Map(strs, strings.ToUpper)) - -} diff --git a/examples/collection-functions/collection-functions.hash b/examples/collection-functions/collection-functions.hash deleted file mode 100644 index 27465b8db..000000000 --- a/examples/collection-functions/collection-functions.hash +++ /dev/null @@ -1,2 +0,0 @@ -002b2ee17f1111c7607a7b7742753af1b5a3c8c1 -uKnePZM91WV diff --git a/examples/collection-functions/collection-functions.sh b/examples/collection-functions/collection-functions.sh deleted file mode 100644 index 95dc0ee45..000000000 --- a/examples/collection-functions/collection-functions.sh +++ /dev/null @@ -1,7 +0,0 @@ -$ go run collection-functions.go -2 -false -true -false -[peach apple pear] -[PEACH APPLE PEAR PLUM] diff --git a/public/index.html b/public/index.html index c7ef0c4a9..5085e455b 100644 --- a/public/index.html +++ b/public/index.html @@ -121,8 +121,6 @@

Go by Example

  • Recover
  • -
  • Collection Functions
  • -
  • String Functions
  • String Formatting
  • diff --git a/public/recover b/public/recover index 699c93569..3bda174ce 100644 --- a/public/recover +++ b/public/recover @@ -14,7 +14,7 @@ if (e.key == "ArrowRight") { - window.location.href = 'collection-functions'; + window.location.href = 'string-functions'; } } @@ -180,7 +180,7 @@ panic and resumes in the deferred closure.

    - Next example: Collection Functions. + Next example: String Functions.

    diff --git a/public/string-functions b/public/string-functions index aae6f68dd..32a757d42 100644 --- a/public/string-functions +++ b/public/string-functions @@ -9,7 +9,7 @@ onkeydown = (e) => { if (e.key == "ArrowLeft") { - window.location.href = 'collection-functions'; + window.location.href = 'recover'; }