golang で URL を結合する

golang で URL を結合する

  • url.Parse と path.Join を使う
  • path.Join だけだと正しく結合できない場合がある1
    • 実行結果の https:/golang.org/pkg/net/url のようにスラッシュが削除される

サンプルコード

package main

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

const (
    srcURL = "https://golang.org/pkg/"
    path1  = "net"
    path2  = "url"
)

func main() {
    fmt.Printf("path.Join だけで結合: %s\n", path.Join(srcURL, path1, path2))

    u, err := url.Parse(srcURL)
    if err != nil {
        panic(err)
    }
    u.Path = path.Join(u.Path, path1, path2)
    fmt.Printf("url.Parse と path.Join で結合: %s\n", u)
}

実行結果

path.Join だけで結合: https:/golang.org/pkg/net/url
url.Parse と path.Join で結合: https://golang.org/pkg/net/url

参考にさせていただいたサイト