在Go中,以下工作(请注意,地图的一种用法有一个收益,另一种有两个收益)
package main
import "fmt"
var someMap = map[string]string { "some key": "hello" }
func main() {
if value, ok := someMap["some key"]; ok {
fmt.Println(value)
}
value := someMap["some key"]
fmt.Println(value)
}
但是,我不知道如何使用自己的功能执行相同的操作。是否可能具有类似的行为以及可选的return map
?
例如:
package main
import "fmt"
func Hello() (string, bool) {
return "hello", true
}
func main() {
if value, ok := Hello(); ok {
fmt.Println(value)
}
value := Hello()
fmt.Println(value)
}
无法编译(由于错误multiple-value Hello() in single-value context
)…有没有办法使该语法对该函数起作用Hello()
?
map
有所不同,因为它是内置 类型
而不是函数。Go语言规范:索引表达式map
指定了访问a元素的2种形式。
使用函数,您将无法做到这一点。如果一个函数有2个返回值,则必须“期望”两个返回值或根本没有。
但是,您可以将任何返回值分配给Blank标识符:
s, b := Hello() // Storing both of the return values
s2, _ := Hello() // Storing only the first
_, b3 := Hello() // Storing only the second
您还可以选择不存储任何返回值:
Hello() // Just executing it, but storing none of the return values
注意:您也可以将两个返回值都分配给空白标识符,尽管它没有用(除了验证它确实有两个返回值):
_, _ = Hello() // Storing none of the return values; note the = instead of :=
您也可以在Go Playground上尝试这些。
辅助功能
如果您多次使用它,并且不想使用空白标识符,请创建一个放弃第二个返回值的帮助器函数:
func Hello2() string {
s, _ := Hello()
return s
}
现在,您可以执行以下操作:
value := Hello2()
fmt.Println(value)
问题内容: 我正在尝试将一些Python代码移植到Scala。它大量使用了Numpy和Scipy。虽然我已经找到了许多密集矩阵/线性代数库,它们可以作为NumPy的适当替代品(但不是极好的替代品),但我还没有真正找到能够提供我在SciPy中使用的功能的东西。特别是,我正在寻找一个支持稀疏部分本征分解的库(例如SciPy对arpack的包装),然后再寻找SciPy提供的一些简单内容的库(例如直方图)
问题内容: 是否有类似于C的Go功能,能够处理控制台中的Tab键?我想在控制台应用程序中完成一些工作。 问题答案: C的示例: 等效: 最后的注释行仅显示当您按下第一个元素时,是U + 0009(’CHARACTER TABULATION’)。 但是,由于您的需要(检测选项卡),C 并不适合,因为它需要用户按Enter键。您需要的是@miku提到的ncurses的getch()/ readline
问题内容: 我正在尝试通过检查golang TCPConn.Write返回的错误来检测发送失败,但它为nil。我也尝试使用TCPConn.SetWriteDeadline,但没有成功。 事情就是这样发生的: 服务器启动 客户端连接 服务器发送一条消息,客户端收到它 客户端 关闭 服务器再发送一条消息:没有错误 服务器发送第三条消息:仅现在出现错误 问题 :为什么只有第二条消息发送给不存在的客户端会
问题内容: 我在MS SQL Server 2005数据库的“ Articles-”表中存储了大量文章。 现在,我需要一些SP或SQL查询,这些查询可以针对任何用户的输入向我返回类似的文章(非常类似于博客中的“类似帖子”或stackoverflow中的“相关问题”)。匹配应同时适用于ArticleTitle和ArticleContent。查询应该足够智能,可以根据它们的相关性对结果进行排序。 是否
我想知道当服务器端发生错误时返回是否正确(错误详细信息将包含在响应主体中)。 例子: 我们正在发送 这是不是正确的行为?我们是否应该将状态代码更改为200以外的值?
这是通过递归和回溯解决的一个经典问题,使用下面的Java代码: } }