有一種方法可以將兩個變量分配給一個函數,該函數在您聲明瞭一個變量而另一個變量未聲明時返回兩個值。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