Go言語でCodeEvalのEmail Validation
関連 : Python2でCodeEvalのEmail Validation - brainstorm
net/mailパッケージにアドレスをパースする関数が用意されている
package main import ( "bufio" "flag" "fmt" "io" "net/mail" "os" ) func isValidMailAddress(address string) bool { _, err := mail.ParseAddress(address) return err == nil } func main() { flag.Parse() read_file, _ := os.OpenFile(flag.Arg(0), os.O_RDONLY, 0600) defer read_file.Close() reader := bufio.NewReader(read_file) for { switch line, err := reader.ReadString('\n'); err { case nil: chopped := line[0 : len(line)-1] result := isValidMailAddress(chopped) fmt.Fprintln(os.Stdout, result) case io.EOF: os.Exit(0) default: fmt.Fprintln(os.Stderr, "error:", err) os.Exit(1) } } }