为了账号安全,请及时绑定邮箱和手机立即绑定

如何在Go中的单个语句中声明不同数据类型的变量

如何在Go中的单个语句中声明不同数据类型的变量

Go
FFIVE 2022-10-17 09:56:39
我想在 Go 中的单个语句中声明两个不同数据类型的变量(string和)。error我不想使用短声明(:=)运算符,因为我喜欢在声明时指定变量的类型。我正在关注Go docs 中的 Go 教程。我有一个greetings.Hello()从另一个模块调用的函数。该greetings.Hello()函数如下所示:package greetingsimport (    "errors"    "fmt")func Hello(name string) (string, error) {    // If no name was given, return an error with a message    if name == "" {        return "", errors.New("empty name")    }    // If a name was received, return a value    var message string = fmt.Sprintf("Welcome %v!", name)    return message, nil}如您所见,此函数返回两个值(astring和 an error)。所以最终,我必须将此函数的结果分配给调用者中的两个变量。我greetings.Hello()从一个名为hello. 模块主包的主函数hello如下所示:package mainimport (    "fmt"    "log"    "creating_modules/greetings")func main() {    log.SetPrefix("greetings: ")    log.SetFlags(0)    var message string, err error = greetings.Hello("")    if err !=nil {        log.Fatal(err)    }    fmt.Println(message)}creating_modules/greetings是包含函数的问候模块Hello()。大多数地鼠都是这样处理的:message, error := greetings.Hello()但我想在一条语句中声明变量及其数据类型。这两个变量也应该被赋予返回值greetings.Hello()。上面提到的hello模块的main函数因为赋值不正确,在运行的时候会报错,参考这一行:var message string, err error = greetings.Hello("")当使用以下代码运行此代码时,Go 编译器会返回此错误go run:.\hello.go:14:20: syntax error: unexpected comma at end of statement可以通过复制粘贴上面的代码来简单地重现此问题(注意该greetings模块是本地模块,因此您需要使用 设置 go 工具的引用路径go edit -replace)需要注意的另一件事是,我的问题与这个问题不同,因为该问题是关于在单个语句中声明具有相同数据类型的变量,而我的问题是关于在单个语句中声明具有不同数据类型的多个变量。PS 知道 Golang 没有这个功能我不会感到惊讶
查看完整描述

1 回答

?
森林海

TA贡献2011条经验 获得超2个赞

在单个语句中声明变量及其数据类型

不可能

变量声明下语言规范中的支持子句

如果存在类型,则为每个变量赋予该类型。否则,每个变量都被赋予赋值中对应的初始化值的类型。如果该值是无类型常量,则首先将其隐式转换为其默认类型;

所以像下面这样的东西可以通过不指定任何一种类型来工作,但是你可以很好地使用短变量声明来:=代替

var message, error = greetings.Hello()

但是您可以使用它们的类型信息显式声明变量并使用=赋值。

var message string

var err error


if message, err = greetings.Hello(""); err != nil {

    log.Fatal(err)

}


查看完整回答
反对 回复 2022-10-17
  • 1 回答
  • 0 关注
  • 111 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信