Golang_HomeWork/hw10_program_optimization/stats.go

45 lines
824 B
Go

package hw10_program_optimization //nolint:golint,stylecheck
import (
"bufio"
"io"
"strings"
jsoniter "github.com/json-iterator/go"
)
type User struct {
ID int
Name string
Username string
Email string
Phone string
Password string
Address string
}
type DomainStat map[string]int
var json = jsoniter.ConfigCompatibleWithStandardLibrary
func GetDomainStat(r io.Reader, domain string) (DomainStat, error) {
result := make(DomainStat)
var err error
var user User
e := bufio.NewReader(r)
for {
line, _, err := e.ReadLine()
if err == io.EOF {
break
}
if err = json.Unmarshal(line, &user); err != nil {
return DomainStat{}, err
}
if strings.HasSuffix(user.Email, "."+domain) {
result[strings.ToLower(strings.SplitN(user.Email, "@", 2)[1])]++
}
}
return result, err
}