2020年2月12日水曜日

開発環境

入門Goプログラミング (Nathan Youngman(著)、Roger Peppé(著)、吉川 邦夫(監修, 翻訳)、翔泳社)のUNIT 6(ネズミの穴を下って)、LESSON 28(エラーは人の常)の練習問題の解答を求めてみる。

コード

package main

import (
 "fmt"
 "net/url"
 "os"
)

func main() {
 us := []string{
  "https://www.mkamimura.com",
  "https://a b.com/",
 }
 for _, u := range us {
  parsedURL, err := url.Parse(u)
  if err != nil {
   fmt.Printf("%#v\n%[1]v\n", err)
   if e, ok := err.(*url.Error); ok {
    fmt.Printf("%#v\n%v, %v, %v\n", e, e.Op, e.URL, e.Err)
    os.Exit(1)
   }
  }
  fmt.Printf("%#v\n%[1]v\n\n", parsedURL)
 }
}

入出力結果(Zsh、PowerShell、Terminal)

% go run url.go
&url.URL{Scheme:"https", Opaque:"", User:(*url.Userinfo)(nil), Host:"www.mkamimura.com", Path:"", RawPath:"", ForceQuery:false, RawQuery:"", Fragment:""}
https://www.mkamimura.com

&url.Error{Op:"parse", URL:"https://a b.com/", Err:" "}
parse https://a b.com/: invalid character " " in host name
&url.Error{Op:"parse", URL:"https://a b.com/", Err:" "}
parse, https://a b.com/, invalid character " " in host name
exit status 1
%

0 コメント:

コメントを投稿