2015-09-30 132 views
-3

我對Go很新,我想將這個代碼片段變成函數。向函數中輸入變量名

基本上,我想知道是否有傳遞一個變量名到一個函數調用,所以如果我叫一個可行的辦法:

changeColor(varName)

它會跑,然後分配一個新的值到輸入到函數調用中的原始變量。

希望這是有道理的,並在此先感謝

if varName == yellow { 
    varName = black 
} else { 
    varName = yellow 
} 
+3

你可以使用指針來做到這一點。 https://tour.golang.org/moretypes/1 – Snowman

+1

這似乎將在基本文檔中得到很好的介紹。您應該先從這裏開始:https://golang.org/doc/ – JimB

+0

由於文檔對於新手來說可能有點陡峭,這是一個非常簡單而全面的關於使用Go的基礎知識的文本:https:// www。 golang-book.com/books/intro/8 – Snowman

回答

3

您可以瞭解一般概念是由不同的Evaluation Strategies是編程語言採用讀了。在Go中,您可以通過指針實現您正在查找的行爲。

如果沒有指針,通常會傳遞變量的副本。使用指針,您將傳遞內存中值位置的副本。這意味着該功能可以修改已瞭解的位置的實際值。

下面是一個例子,做你解釋什麼:

http://play.golang.org/p/ufrEjmXwmB

請記住,這可能不是一個真正的程序要做到這一點的最好辦法。如果重點只是學習,那就去做吧。嘗試使用指針指針傳遞指針等等:p

+2

對不起,在這樣的初學者問題上進入語義學,但由於「通過引用傳遞」沒有很好地定義(除了像C++這樣的語言,稱爲「引用」 ),我們大多數人都喜歡避開Go這個詞。 go中的所有東西都是按值傳遞的,包括指針,其中指針*值*被複制到參數變量中。 – JimB

+0

感謝提醒@JimB。我已經更新了我的答案,以獲得更正確的語言。據我所知,在傳統的comp-sci教科書中,「通過引用」是明確定義的,儘管我確實在這裏錯誤地使用了它。如果答案仍然關閉,請隨時編輯,我不會冒犯:p –

+0

是的,也許這個術語在學術意義上是明確定義的,但通俗地說它經常被錯誤地使用(例如,看看wiki文章你在「通過共享呼叫」下面鏈接,其中列出了紅寶石計數器以及社區聲稱它是「通過引用」)。 – JimB