在Go中,有没有一种优雅的方法可以像在Python中那样从数组进行多个分配?这是我要尝试执行的Python示例(拆分一个字符串,然后将结果数组分配给两个变量)。
python:
>>> a, b = "foo;bar".split(";")
我当前的解决方案是:
x := strings.Split("foo;bar", ";")
a, b := x[0], x[1]
在某些结构中,我可以看到它变得凌乱。我当前面对的实际示例是一个书签文件,它解析并分配给地图:
bookmark := make(map[string]string)
x := strings.Split("foo\thttps://bar", "\t")
name, link := x[0], x[1]
bookmark[name] = link
现在我有一个无用的变量x
。我想做类似的事情:
bookmark := make(map[string]string)
name, line := strings.Split("foo\thttps://bar", "\t")
bookmark[name] = link
但这是无效的。
正如Sergio Tulentsev所提到的,不支持Python中的常规打包/解包。我认为方法是使用多个返回值定义自己的小型即席函数:
func splitLink(s, sep string) (string, string) {
x := strings.Split(s, sep)
return x[0], x[1]
}
然后您可以编写:
name, link := splitLink("foo\thttps://bar", "\t")
但这显然仅在分割至少两个子字符串时有效,并且如果两个以上的子字符串被分割,则默默地忽略。如果这是您经常使用的东西,则可能会使您的代码更具可读性。
- 编辑 -
解数组的另一种方法是通过可变参数指针参数:
func unpack(s []string, vars... *string) {
for i, str := range s {
*vars[i] = str
}
}
哪个让你写:
var name, link string
unpack(strings.Split("foo\thttps://bar", "\t"), &name, &link)
bookmarks[name] = link
这将适用于任何数组大小,但可以说可读性较差,并且必须显式声明变量。
我在Spark上从事一个项目,最近从使用Spark Standalone切换到使用Mesos进行集群管理。现在,我发现自己对在新系统下提交作业时如何分配资源感到困惑。 在独立模式下,我使用的是这样的东西(以下是Cloudera博客文章中的一些建议: 这是一个集群,其中每台机器有16个内核和大约32 GB RAM。 这样做的好处是,我可以很好地控制运行的执行器的数量以及分配给每个执行器的资源。在上面
我有一个家庭作业,要求我用用户输入生成一个n×n矩阵。我试过几种解决办法,但似乎都不管用。我想对你们中的许多人来说,这是一个相对简单的任务。 这是分配文本:编写一个方法,使用以下签名显示一个n×n矩阵:public static void printMatrix(int n)每个元素都是0或1,这是随机生成的。编写一个测试程序,提示用户输入n,并显示n×n矩阵。 我最近的尝试如下(显然我还没有调用
我想解决的问题包括大约800项任务,必须分配给大约120名工人。工人必须有资格完成这项任务,并且每周只有一定的可用小时数。大约80%的作业已经预先分配好了。这意味着它们应该被保留,但如果其他20%的问题无法解决,则可能违反预先分配 我已经有了一个使用Choco solver的模型,如果违反了预先分配,该模型将使用惩罚,目标是最小化惩罚。然而,我认为这不是很有效,因为解算器不会通过分配预先分配的变量
如果有其他的方法来配置jHipster中的石英作业,请告诉我。或者,如果jHipster为调度程序工作提供了开箱即用的功能,那就太好了。 石英作业依赖关系
Kafka1.0.1 我使用200个分区的主题。flink使用这个主题。 最近,我进行了手动分区重新分配。 当我重新分配分区时,Flink连续失败并出现此错误。 错误1。 错误2. 错误3。 当我重新启动失败的作业时,这个错误会不断发生。 所以我重新启动了所有mesos和flink集群,并获得了动物园管理员的许可<有什么原因需要寻找吗?
切片包含三个组件:长度、容量和指向底层数组的指针。 当我们尝试将