Golang根据URL地址判断流媒体协议类型|Go主题月

Golang根据URL地址判断流媒体协议类型|Go主题月目录问题解决问题如何根据一个流媒体地址URL判断对应的流媒体协议,比如RTMP、RTSP协议等。其本质就是一个简单的字符串操作,通过这个需求,我们来了解一下Golang是如何处理字符串的。解决这里提供

目录

问题

解决

问题

如何根据一个流媒体地址URL判断对应的流媒体协议,比如RTMP、RTSP协议等。

其本质就是一个简单的字符串操作,通过这个需求,我们来了解一下Golang是如何处理字符串的。

解决

这里提供一个产品级方法,可以直接拿来用。

(已经经过项目验证,质量嘛,有保证)

func getProtocol(url string) (string, error) {
        // golang的判断语句没有括号,一开始挺不适应的
	if url != "" {
                // 获取冒号索引位置
		index := strings.Index(url, ":")
                // 找到了说明URL正确,否则报错
		if index > 0 { 
                        // 这里需要注意两点:
                        // 1. golang字符串的索引原则是左闭右开
                        // 2. 协议类型最好进行格式化处理再输出返回,比如这里是“最大化”(大写格式)
			return strings.ToUpper(url[0:index]), nil
		} else { 
                        // 注意提前定义ErrorInvalidURL类型
			return "", ErrorInvalidURL
		}
	}
	return "", ErrorNullURL
}

Golang根据URL地址判断流媒体协议类型|Go主题月上面的 getProtocol() 方法会输出流媒体协议的大写字符串标识。其实,任何开发语言都一样,我们在进行字符串比较的时候都要主要先进行大写或者小写的统一,再进行比较。

最后,给出一个完整的代码实例,大家也可以自己用下面的代码测试,验证是否真的好用:

// 声明包
package main

// 导入依赖包
import(
	"fmt"
	"strings"
)

// 定义宏变量类型,这里定义了两种错误信息
var (
	ErrorNullURL    = fmt.Errorf("url is null")
	ErrorInvalidURL = fmt.Errorf("url is not valid")
)

// 判断流媒体协议类型的核心方法
func getProtocol(url string) (string, error) {
	if url != "" {
		index := strings.Index(url, ":")
		if index > 0 {
			return strings.ToUpper(url[0:index]), nil
		} else {
			return "", ErrorInvalidURL
		}
	}
	return "", ErrorNullURL
}

// 主方法
func main() {
        // demo实例
	url1 := "rtmp://172.0.0.1:1935/test/live"
	url2 := "rtsp://172.0.0.1:1554/live"
        // 测试1
	if pro, err := getProtocol(url1); err == nil {
		fmt.Println("url1 protocol: ", pro)
	}
        // 测试2
	if pro, err := getProtocol(url2); err == nil {
		fmt.Println("url2 protocol: ", pro)
	}
}

将上述代码保存为 url-check.goGolang根据URL地址判断流媒体协议类型|Go主题月 文件。

执行上述程序,运行如下命令:

go run url-check.go

上面程序的运行结果如下:

url1 protocol: RTMP
url2 protocol: RTSP

整体运行过程的截图如下:

Golang根据URL地址判断流媒体协议类型|Go主题月Golang根据URL地址判断流媒体协议类型|Go主题月

推荐阅读:

Main方法一定是程序的入口方法吗?|Go主题月

Golang如何关闭可执行程序|Go主题月

今天的文章Golang根据URL地址判断流媒体协议类型|Go主题月分享到此就结束了,感谢您的阅读。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/14690.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注