当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


GO URL用法及代码示例


GO语言"net/url"包中"URL"类型的用法及代码示例。

URL 表示已解析的 URL(从技术上讲,是 URI 引用)。

表示的一般形式是:

用法:

[scheme:][//[userinfo@]host][/]path[?query][#fragment]

方案后不以斜杠开头的 URL 被解释为:

scheme:opaque[?query][#fragment]

请注意,路径字段以解码形式存储:/%47%6f%2f 变为 /Go/。结果是无法分辨路径中的哪些斜杠是原始 URL 中的斜杠,哪些是 %2f。这种区别很少重要,但当它重要时,代码应该使用 RawPath 一个可选字段,只有在默认编码与路径不同时才会设置该字段。

URL 的 String 方法使用EscapedPath 方法获取路径。有关详细信息,请参阅EscapedPath 方法。

type URL struct {
    Scheme      string
    Opaque      string    // encoded opaque data
    User        *Userinfo // username and password information
    Host        string    // host or host:port
    Path        string    // path (relative paths may omit leading slash)
    RawPath     string    // encoded path hint (see EscapedPath method); added in Go 1.5
    ForceQuery  bool      // append a query ('?') even if RawQuery is empty; added in Go 1.7
    RawQuery    string    // encoded query values, without '?'
    Fragment    string    // fragment for references, without '#'
    RawFragment string    // encoded fragment hint (see EscapedFragment method); added in Go 1.15
}

例子:

package main

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

func main() {
	u, err := url.Parse("http://bing.com/search?q=dotnet")
	if err != nil {
		log.Fatal(err)
	}
	u.Scheme = "https"
	u.Host = "google.com"
	q := u.Query()
	q.Set("q", "golang")
	u.RawQuery = q.Encode()
	fmt.Println(u)
}

输出:

https://google.com/search?q=golang

示例(往返):

package main

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

func main() {
	// Parse + String preserve the original encoding.
	u, err := url.Parse("https://example.com/foo%2fbar")
	if err != nil {
		log.Fatal(err)
	}
	fmt.Println(u.Path)
	fmt.Println(u.RawPath)
	fmt.Println(u.String())
}

输出:

/foo/bar
/foo%2fbar
https://example.com/foo%2fbar

相关用法


注:本文由纯净天空筛选整理自golang.google.cn大神的英文原创作品 URL。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。