Skip to content

Instantly share code, notes, and snippets.

@tetsuok
Created April 2, 2012 02:20
Show Gist options
  • Save tetsuok/2280069 to your computer and use it in GitHub Desktop.
Save tetsuok/2280069 to your computer and use it in GitHub Desktop.
An answer of the exercise: Maps on a tour of Go
package main
import (
"code.google.com/p/go-tour/wc"
"strings"
)
func WordCount(s string) map[string]int {
m := make(map[string]int)
a := strings.Fields(s)
for _, v := range a {
m[v]++
}
return m
}
func main() {
wc.Test(WordCount)
}
@alkstsgv
Copy link

package main

import (
	"strings"
	"golang.org/x/tour/wc"
)

func WordCount(s string) map[string]int {
	a := []string{s}
	var b map[string]int
	b = make(map[string]int)
	for _, el := range a {
		a1 := strings.Fields(el)
		for e1, e2 := range a1 {
			e1 = b[e2]
			if e1 == e1 {
				b[e2] = e1 + 1
			}
		}
	}
	return b
}

func main() {
	wc.Test(WordCount)
}

@0riginaln0
Copy link

package main

import (
	"strings"
	"golang.org/x/tour/wc"
)

func WordCount(s string) map[string]int {
	words := strings.Fields(s)
	words_map := make(map[string]int)

	for _, word := range words {
		if count, is_present := words_map[word]; is_present {
			words_map[word] = count + 1
		} else {
			words_map[word] = 1
		}
	}
	return words_map
}

func main() {
	wc.Test(WordCount)
}

@sno-windy
Copy link

Here is my struggling answer without strings.Fields.

package main

import "golang.org/x/tour/wc"

func WordCount(s string) map[string]int {
	result := make(map[string]int)
	words := make([]string, 0)
	var start, end, wordLen int
	for i, rune := range s {
		wordLen += 1
		if string(rune) != " " {
			continue
		}
		end = i
		words = append(words, s[start:end])
		start = i+1
		wordLen = 0
	}
	if wordLen > 0 {
		words = append(words, s[start:len(s)])
	}	
	for _, v := range words {
		_, ok := result[v]
		if ok {
			result[v] += 1
		} else {
			result[v] = 1
		}
	}
	return result
}

func main() {
	wc.Test(WordCount)
}

@poirierunited
Copy link

package main

import (
"golang.org/x/tour/wc"
"strings"
)

func WordCount(s string) map[string]int {
counterMap := make(map[string]int)

for _, word := range strings.Fields(s) {
	value, isPresent := counterMap[word]
	
	if isPresent {
		counterMap[word] = value + 1
	
	} else {
		counterMap[word] = 1
	}
}

return counterMap

}

func main() {
wc.Test(WordCount)
}

@j4breu
Copy link

j4breu commented Mar 13, 2024

package main

import (
	"golang.org/x/tour/wc"
	"strings"
)

func WordCount(s string) map[string]int {
	count := make(map[string]int)
	
	for _, word := range strings.Fields(s) {
		count[word]++
	}
	
	return count
}

func main() {
	wc.Test(WordCount)
}

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment