I think that’s splitting hairs a bit. Even if you see the loop you don’t know the cost unless you know the size of a slice. For instance, a lookup in a small slice is actually cheaper than a small map - in memory and speed. So you need to know more than “it’s a slice” to make a judgement.
> On Nov 5, 2019, at 5:58 PM, Tyler Compton <xavi...@gmail.com> wrote: > > > I agree with you that an original writer of the code should be expected to > know that a theoretical "contains" or "in" expression has O(n) properties. > However, I've always thought of this from the perspective of someone looking > at the code later and trying to identify performance issues. It's easy to > identify a potentially very costly iteration through a slice if it's more > verbose and always expressed the same way. > >> On Tue, Nov 5, 2019 at 2:44 PM Robert Engels <reng...@ix.netcom.com> wrote: >> Is it though? >> >> You would have the same problem if you thought the size of mySlice was >> always small, and it wasn't - range could be quite expensive (or not) - and >> if that was not valid workable you should be using something other than a >> slice. >> >> You need understanding of the types and cost of operations in any language, >> and the naming (or something else) should make the types easily recognizable >> (and understandable). >> >> >> -----Original Message----- >> From: Tyler Compton >> Sent: Nov 5, 2019 3:57 PM >> To: toddsu...@icloud.com >> Cc: golang-nuts >> Subject: Re: [go-nuts] Why doesn't Go include a contains method for things >> like slices? >> >> Ian's answer addresses your question about the absence of a slice.Contains >> method, but there have been discussions in the past about adding such a >> feature to the language itself as well. You brought up the idea of a builtin >> "contains" function, and I've seen others suggest adding something like >> Python's "in" operator as well. To most of these proposals, the answer has >> been "no" because of concerns about hiding a potentially very expensive >> operation behind a builtin or operator. There's no doubt that: >> >> return myObj in mySlice >> >> ... is easier to miss than: >> >> for _, obj := range mySlice { >> if obj == myObj { >> return true >> } >> } >> return false >> >>> On Tue, Nov 5, 2019 at 12:30 PM toddsurfs via golang-nuts >>> <golang-nuts@googlegroups.com> wrote: >>> Sorry if this question reveals my newness to Go. I tried searching the >>> mailing list but I couldn't find anything in a quick search. It seems like >>> many languages include the ability to check if an array, or slice contain a >>> particular value. I understand that you could do this easily with a for >>> loop or alternatively use a map instead. However, is there a reason why Go >>> doesn't just have slice.Contains(interface{}) or maybe a builtin >>> contains(mySlice, interface{}) ? >>> >>> I assume one reason might be because slices could potentially be really >>> large? Or maybe the community feels that a simple for loop is so easy that >>> it is not necessary? I would love to understand this more. >>> >>> Thank You! >>> -Todd >>> -- >>> You received this message because you are subscribed to the Google Groups >>> "golang-nuts" group. >>> To unsubscribe from this group and stop receiving emails from it, send an >>> email to golang-nuts+unsubscr...@googlegroups.com. >>> To view this discussion on the web visit >>> https://groups.google.com/d/msgid/golang-nuts/7d4c52e3-8c0f-4ba6-ae24-67ddb4a07ede%40googlegroups.com. >> >> -- >> You received this message because you are subscribed to the Google Groups >> "golang-nuts" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to golang-nuts+unsubscr...@googlegroups.com. >> To view this discussion on the web visit >> https://groups.google.com/d/msgid/golang-nuts/CAA%3DXfu33vuhzU1krGJKUZNaj6fNOhYQQY4%2BBfNtsdq0o7Q116w%40mail.gmail.com. >> >> >> -- You received this message because you are subscribed to the Google Groups "golang-nuts" group. To unsubscribe from this group and stop receiving emails from it, send an email to golang-nuts+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/golang-nuts/6914AEFA-3064-45EB-ABD3-D609644B2154%40ix.netcom.com.