首页 > 其他分享 >go net/url

go net/url

时间:2024-01-18 18:58:34浏览次数:26  
标签:url 王义杰 URL go Go net 解析

Go:精通URL解析与处理

原创 王义杰 运维开发王义杰 2024-01-18 18:00 发表于广东 听全文

作为一名Go开发工程师,处理URL是日常任务之一。在Go语言的标准库中,net/url 包提供了解析和处理URL的功能。为了获取URL中的主机部分(例如从 https://10.8.219.83/PAM-XXS/v1/system/config-backups/download/ 中提取 https://10.8.219.83),我们可以使用这个包的功能。

首先,让我们来看一下如何使用 net/url 包来解析URL,并提取其中的主机部分。

使用 net/url 解析URL

Go语言的 net/url 包中的 url.Parse 函数可以解析一个URL字符串,并返回一个 *url.URL 结构,这个结构包含了URL的各个部分,如Scheme(协议)、Host(主机名)、Path(路径)等。

以下是一个简单的示例代码,展示了如何解析URL并获取主机部分:

 

go

package main

import (
"fmt"
"net/url"
)

func main() {
rawURL := "https://10.8.219.83/PAM-XXS/v1/system/config-backups/download/"

// 解析URL
parsedURL, err := url.Parse(rawURL)
if err != nil {
fmt.Println("URL解析出错:", err)
return
}

// 提取主机部分
host := parsedURL.Scheme + "://" + parsedURL.Host
fmt.Println("提取的主机地址为:", host)
}

在这个代码中,我们首先使用 url.Parse 解析了一个URL字符串。然后,我们从返回的 *url.URL 结构中提取 Scheme 和 Host 字段,并将它们组合在一起,这就得到了我们需要的主机部分。

图片

分析与实现

在实际开发过程中,URL解析是非常常见的需求。net/url 包提供的 url.Parse 函数非常适合用来解析和处理URL。它不仅能够帮助我们分解URL的各个部分,而且还能处理很多复杂的情况,如URL编码、端口号的解析等。

如果需要更复杂的URL处理逻辑,比如修改URL的某个部分或构建新的URL,也可以使用 net/url 包中提供的其他功能。例如,我们可以修改 *url.URL 结构的字段,然后使用 url.URL 的 String 方法来生成新的URL字符串。

结论

在Go语言的日常开发中,net/url 包是处理URL的利器。通过它提供的函数和结构,我们可以轻松实现URL的解析、提取以及构造等功能。掌握这个包的使用,对于提升我们作为Go开发者的能力非常有帮助。

王义杰

赞赏二维码钟意作者

软件工具126 go236 软件开发490 软件工具 · 目录 上一篇软件开发:Base64编码详解 阅读 3 运维开发王义杰 ​   喜欢此内容的人还喜欢   Go: Gin框架中的路由组特性及其区别解析     我关注的号 运维开发王义杰 不看的原因   【GoLang入门教程】Go语言几种标准库介绍(八)     架构殿堂 不看的原因   插件机制详解:原理、设计与最佳实践     Go先锋 不看的原因   写留言              

人划线

 

标签:url,王义杰,URL,go,Go,net,解析
From: https://www.cnblogs.com/cheyunhua/p/17973176

相关文章

  • celery与django的结合以及定时任务配置
    一、conda创建新的开发环境C:\Users\yc>condacreate--namecelery_djangopython=3.8C:\Users\yc>condainfo-epy38                 * D:\ProgramData\Anaconda3\envs\py38celery_django           D:\ProgramData\Anaconda3\envs\c......
  • C# .net中PropertyDescriptor的使用和BindingList的ApplySort排序
    找了好多资料都是java中PropertyDescriptor的使用,至于C#中的都抄袭别人的,又讲不清楚怎么用。官方文档也没不会手把手教你怎么用,经过一下午的研究,结果如下1、找到PropertyDescriptor同一dll下的,使用TypeDescriptor反射出属性的PropertyDescriptorCollection,从这里拿出对应属性的P......
  • Golang静态类型、编译型的语言学习
    golang属于一种静态类型、编译型的语言,它的设计目标是提供一种简单、高效、可靠的编程语言,适用于构建大型软件系统。Go语言的设计哲学是简洁、直接、易于理解和使用,Go语言支持并发编程,引入了goroutine和channel的概念,使得并发编程更加简单和高效,无论是用于Web开发、服务器编程、......
  • Google的jax框架在TPU上的循环控制 —— 向量计算设备的循环结构控制
    相关:https://jax.readthedocs.io/en/latest/pallas/tpu.html向量计算设备,如:GPU、TPU等,都是通过向量计算来进行加速的,因此在这类设备中进行向量计算的计算单元是成百上千的,但是进行结构控制的电路单元比较少,可以基本认为在向量设备中进行流程控制是标量的,而不是向量的,也就是说......
  • django的简单学习
    前言以下项目实现基于一个投票系统安装django命令行安装pipinstalldjangopycharm安装pycharm的setting里找到这个,点击+号,搜索django点击InstallPackage新建一个django项目命令行创建项目(windows)在pip安装完之后,在python的Scripts目录里有django-admin.exe:::tip......
  • 运行新建Flutter项目, 报错Exception in thread “main“ java.net.ConnectException:
    新建项目后,直接使用demo进行安卓真机运行时报错Exceptioninthread"main"java.net.ConnectException:Connectiontimedout:connect atjava.base/sun.nio.ch.Net.connect0(NativeMethod) atjava.base/sun.nio.ch.Net.connect(Net.java:579) atjava.base/sun.nio.ch.N......
  • 轻量化CNN网络 - ShuffleNet
    1.ShuffleNetV1论文:ShuffleNet:AnExtremelyEfficientConvolutionalNeuralNetworkforMobileDevices网址:https://arxiv.org/abs/1707.01083提出了``ChannelShuffle`的思想,在ShuffleUnit中全是GConv和DWConv。GConv虽然能够减少参数与计算量,但GConv中不同组之间信......
  • ASP.NET 8 中的 ExceptionHandler【转】
    IntroASP.NET8中引入了IExceptionHandler,我们可以针对某一类的exception做单独的处理,可以将不同类型的异常有不一样的逻辑做不同的处理,异常处理可以变得更加灵活Sample来看一个简单的示例:我们可以实现IExceptionHandler来处理异常:filesealedclassArgumentExceptio......
  • 使用日志类库log4net.dll出现代码loginfo.IsInfoEnabled等于false的解决办(转)
    按语:   工程进行了裁剪,发现原来的日志功能失效了,调试时发现loginfo.IsInfoEnabled一直为false。后参考下面博客内容修改了log4net.config的文件属性修改,解决问题。===========================================================================在使用wpf开发日志方面......
  • Golang之文件系统事件监听
    Golang之文件系统事件监听基本介绍文件系统事件是指文件系统相关的各种操作和状态变化,当一个应用层的进程操作文件或目录时,会触发systemcall,内核的notification子系统可以守在那里,把该进程对文件的操作上报给应用层的监听进程。这些事件可以包括文件和目录的创建、修改、删除和......