go - 如何使用 Go 进行变量解包
问题描述
我正在尝试使用 Go 编写一个程序,该程序在 python 中执行元组或变量解包,如下所示
url = ('https://www.amazon.com/War-Art-Through-Creative-Battles' '/dp/1936891026/?keywords=war+of+art')
domain , *rest , isbn = url.split("/")[2:-1]
所以我使用 Go 编写了如下代码
package main
import (
"fmt"
"strings"
)
func main() {
var a string
a = ("https://www.amazon.com/War-Art-Through-Creative-Battles" +
"/dp/1936891026/?keywords=war+of+art") // dont use ' quotes
fmt.Println(a)
split_a := strings.Split(a, "/")
fmt.Println(split_a)
var rest []string
var domain string
var isbn string
domain, rest, isbn = split_a[2:-1]
}
并得到cannot assign 1 values to 3 variables compiler WrongAssignCount
.
我理解这个错误,因为它反映了我想要实现的目标,我试图找出实现这一目标的方法,最后想到与其他人核实。任何建议都非常感谢。
谢谢你。
解决方案
这只是字符串操作,所以没有一个正确的答案。由于您的来源是一个 URL,我想说net/url
这是一个很好的起点:
package main
import (
"net/url"
"path"
)
func main() {
p, e := url.Parse(
"https://www.amazon.com/" +
"War-Art-Through-Creative-Battles/dp/1936891026/?keywords=war+of+art",
)
if e != nil {
panic(e)
}
rest, isbn := path.Split(path.Clean(p.Path))
println(
p.Host == "www.amazon.com",
rest == "/War-Art-Through-Creative-Battles/dp/",
isbn == "1936891026",
)
}
推荐阅读
- keycloak - Keycloak 令牌生成不起作用 - 未经授权的凭据
- spring - Spring 的 ApplicationListener
打破@CrossOrigin - c# - 在 razor-pages ASP.NET Core MVC 中与 asp-for 一起使用时,Textarea 不会在其中显示任何内容
- sql - 如何删除子查询
- jquery - 每个 ajax 成功调用的增量计数器
- android - 断开其他应用在 Android 中启用的 VPN
- c++ - 如果 QProcess 正在等待输入,是否可以发出信号?
- css - 如何使用 Angular Material 为任何组件添加背景?
- javascript - 如何创建通用分页功能?
- git - 在 Windows 7 中通过 atom 在 git bash 中打开文件