Go语言拼接URL路径的三种方法

 更新时间:2023年03月07日 10:56:43   作者:小龙在山东  
本文主要介绍了Go语言拼接URL路径的三种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

Go语言拼接URL路径有多种方法建议用ResolveReference。

JoinPath

JoinPath会把多个多个路径合并成一个路径,并且处理../和./,多个//合并成单个/。

package main

import (
    "fmt"
    "net/url"
)

func main() {
    u1 := "http://example.com/directory/"
    u2 := "../../..//search?q=dotnet"
    u3 := "/dir1/dir2/search?q=dotnet"

    j1, _ := url.JoinPath(u1, u2)
    j2, _ := url.JoinPath(u1, u3)
    fmt.Println(j1)
    // http://example.com/search%3Fq=dotnet
    fmt.Println(j2)
    // http://example.com/directory/dir1/dir2/search%3Fq=dotnet
}

ResolveReference

ResolveReference会处理绝对路径和相对路径。

package main

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

func main() {
    u1, _ := url.Parse("../../..//search?q=dotnet")
    u2, _ := url.Parse("/dir1/dir2/search?q=dotnet")
    base, err := url.Parse("http://example.com/directory/")
    if err != nil {
        log.Fatal(err)
    }
    fmt.Println(base.ResolveReference(u1))
    // http://example.com/search?q=dotnet
    fmt.Println(base.ResolveReference(u2))
    // http://example.com/dir1/dir2/search?q=dotnet
}

path.Join

path主要是对斜杠放个的路径。

package main

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

func main() {
    u, err := url.Parse("http://example.com/test/")
    if err != nil {
        log.Fatal(err)
    }
    u.Path = path.Join(u.Path, "../bar.html")
    s := u.String()
    fmt.Println(s) // http://example.com/bar.html

}

参考

https://pkg.go.dev/net/url@go1.19beta1#JoinPath
http://doc.golang.ltd/pkg/net_url.htm

到此这篇关于Go语言拼接URL路径的三种方法的文章就介绍到这了,更多相关Go语言拼接URL路径内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 详解如何使用Go语言进行文件监控和通知

    详解如何使用Go语言进行文件监控和通知

    在Go语言中,文件监控通常涉及到文件系统事件的监听,文件或目录的状态发生变化(如创建、删除、修改等)时,你的程序需要得到通知,所以本文给大家介绍了如何使用Go语言进行文件监控和通知,需要的朋友可以参考下
    2024-06-06
  • go解析svn log生成的xml格式的文件

    go解析svn log生成的xml格式的文件

    这篇文章主要介绍了go解析svn log生成的xml格式的文件的方法,非常的实用,有需要的小伙伴可以参考下。
    2015-04-04
  • go中的unsafe包及使用详解

    go中的unsafe包及使用详解

    Unsafe code是一种绕过go类型安全和内存安全检查的Go代码。这篇文章主要介绍了go中的unsafe包,需要的朋友可以参考下
    2019-07-07
  • Go分布式链路追踪实战探索

    Go分布式链路追踪实战探索

    这篇文章主要为大家介绍了Go分布式链路追踪实战示例探索,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2024-01-01
  • 深度解密 Go 语言中的 sync.map

    深度解密 Go 语言中的 sync.map

    这篇文章主要介绍了深度解密 Go 语言中的 sync.map,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-06-06
  • 解决go获取文件md5值不正确的问题

    解决go获取文件md5值不正确的问题

    本文主要介绍了解决go获取文件md5值不正确的问题,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-01-01
  • 一文带你理解Go语言中方法的本质

    一文带你理解Go语言中方法的本质

    我们知道,Go语言从设计伊始,就不支持经典的面向对象语法元素,但 Go 语言仍保留了名为“方法(method)”的语法元素,下面我们就来带大家深入了解一下Go语言中的方法吧
    2023-11-11
  • golang通过http访问外部网址的操作方法

    golang通过http访问外部网址的操作方法

    这篇文章主要介绍了golang通过http访问外部网址的操作方法,分为 get方式访问外部的接口,Post方式请求外部接口,本文通过实例代码给大家介绍的非常详细,需要的朋友可以参考下
    2024-02-02
  • go local history本地历史恢复代码神器

    go local history本地历史恢复代码神器

    这篇文章主要为大家介绍了go local history本地历史恢复代码神器的使用功能详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2024-01-01
  • Go语言实现新春祝福二维码的生成

    Go语言实现新春祝福二维码的生成

    二维码现在是随处度可以看到,买东西,支付,添加好友只要你扫一扫就能完成整个工作,简单且方便。所以利用这个新春佳节做一个带着新春祝福的二维码吧
    2023-02-02

最新评论