Comments (3)
So, it's typically always a bad idea to iterate a data-structure and mutate it during iteration as in your first example. The reason is because it pretty much invalidates the iterator.
Your second example is actually the proper way to do it, especially when dealing with sets. You start off with your original set called: mySet
which has some data. You create a different set that is empty. This represents the stuff "taken" out of the original set. But instead of actually taking anything out, you add what is to be removed into diffSet
.
Then you just take the difference.
In fact the example works for me without hanging at all.
package main
import (
"bufio"
"fmt"
"os"
mapset "github.com/deckarep/golang-set"
)
func main() {
mySet := mapset.NewSet()
mySet.Add("a")
mySet.Add("b")
mySet.Add("c")
diffSet := mapset.NewSet()
//fill set with stuff
myIt := mySet.Iterator()
scanner := bufio.NewScanner(os.Stdin)
for stuff := range myIt.C {
fmt.Println("Found " + stuff.(string) + " remove it?[Y/n]")
scanner.Scan()
text := scanner.Text()
if text == "y" || text == "Y" {
fmt.Println("removing")
diffSet.Add(stuff) //this will hang too
fmt.Println("done")
}
}
mySet = mySet.Difference(diffSet)
fmt.Printf("result: %+v\n", mySet)
}
from golang-set.
Here is the output of the run above:
Found a remove it?[Y/n]
y
removing
done
Found b remove it?[Y/n]
n
Found c remove it?[Y/n]
n
result: Set{b, c}
from golang-set.
Yea seems it's working, no idea why it hanged... well if that's the only way i will use it, thanks
from golang-set.
Related Issues (20)
- iterate with random sequence? HOT 1
- Feature request: Support for immutable sets HOT 1
- [Q] How to print the contents of a Set? HOT 1
- Getting error when instantiating a set: "invalid operation: cannot index mapset.NewSet (value of type func(s ...interface{}) mapset.Set)" HOT 6
- No installation guide
- [Question] Contains() parameters escape to heap HOT 4
- How I can get every elements in my set? HOT 2
- Unmarshalling threadUnsafeSet with json.Unmarshal panics HOT 7
- Document thread-safe set usage HOT 1
- Issue: Contains HOT 2
- [Question] Why isn't `defer` used? HOT 6
- Non-mutating helpers to add/remove HOT 2
- Guidance/suggestions on Iterators and Stop() HOT 5
- Add a way to distinguish thread safe and unsafe sets HOT 3
- Is there any method to know whether a set is empty? HOT 2
- unmarshal json fails when set is part of struct HOT 2
- Suggestion: option to restrict comparable to only exported values. HOT 1
- why isn't there a `mapset.NewSetFromSlice` method? HOT 1
- Allow capacity to be specified when initializing a Set HOT 2
- Suggestion: Add comparator for structs HOT 4
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from golang-set.