有一种方法可以将两个变量分配给一个函数,该函数在您声明了一个变量而另一个变量未声明时返回两个值。Golang变量赋值
例如:
var host string
if host, err := func(); err != nil {}
在上面的代码中,主机被声明,但ERR不是。我想要一个干净的方式来做到这一点,而不是声明err
有一种方法可以将两个变量分配给一个函数,该函数在您声明了一个变量而另一个变量未声明时返回两个值。Golang变量赋值
例如:
var host string
if host, err := func(); err != nil {}
在上面的代码中,主机被声明,但ERR不是。我想要一个干净的方式来做到这一点,而不是声明err
在你的例子中,你根本不应该声明主机。没有办法做这样的部分分配......您可以使用:=
这个简短的声明和分配,或者你使用=
,而你只是在分配任务。我个人很少在Go中写下var
这个词。
要说清楚的是,如果您有一个变量已经被一个或多个未声明的变量声明,那么允许您使用:=
进行赋值,但反之并不正确。含义如果一个或多个左侧值尚未被声明,则不能使用=
。
如果第二条语句是if/for声明。声明变量“host”是否保存func()返回的值? – Keeto
@Keeto它会,但是当你这样做时,'host'只会在'if'的范围内可用。这是一个关于比赛的例子。 https://play.golang.org/p/3ONeB2D6kH 正如你可以看到主机不在范围之外的if。 – evanmcdonnal
当您在if
这样的情况下使用:=
时,您将始终获得在if
范围内声明的新变量。在if
之后,host
的值将与以前相同。如果要执行此操作,则需要在if
之前声明host
和err
(并且在if
中不要使用:=
)。
很确定它会自动做到这一点。 :=是否存在新变量,=是否存在。 – Puzzle84
如果第二条语句是if/for语句。声明变量“host”是否保存func()返回的值? – Keeto
简答题就是你所要求的是不可能的。你还必须声明'err'。 – Endophage