type WordCounter intfunc (c *WordCounter) Write(p []byte) (int, error) { scanner := bufio.NewScanner(bytes.NewReader(p)) // set the split function for the scanning operation scanner.Split(bufio.ScanWords) // Count the words count := 0 for scanner.Scan() { count++ } if err := scanner.Err(); err != nil { return -1, err } *c += WordCounter(count) return len(p), nil}func main() { input := "Spicy jalapeno pastrami ut ham turducken.\n Lorem sed ullamco, leberkas sint short loin strip steak ut shoulder shankle porchetta venison prosciutto turducken swine.\n Deserunt kevin frankfurter tongue aliqua incididunt tri-tip shank nostrud.\n" var c WordCounter _, err := fmt.Fprintf(&c, "%s", input) if nil != err { log.Fatal(err) } fmt.Println(c) // 32}