我對Go很新,我想將這個代碼片段變成函數。向函數中輸入變量名
基本上,我想知道是否有傳遞一個變量名到一個函數調用,所以如果我叫一個可行的辦法:
changeColor(varName)
它會跑,然後分配一個新的值到輸入到函數調用中的原始變量。
希望這是有道理的,並在此先感謝
if varName == yellow {
varName = black
} else {
varName = yellow
}
我對Go很新,我想將這個代碼片段變成函數。向函數中輸入變量名
基本上,我想知道是否有傳遞一個變量名到一個函數調用,所以如果我叫一個可行的辦法:
changeColor(varName)
它會跑,然後分配一個新的值到輸入到函數調用中的原始變量。
希望這是有道理的,並在此先感謝
if varName == yellow {
varName = black
} else {
varName = yellow
}
您可以瞭解一般概念是由不同的Evaluation Strategies是編程語言採用讀了。在Go中,您可以通過指針實現您正在查找的行爲。
如果沒有指針,通常會傳遞變量的副本。使用指針,您將傳遞內存中值位置的副本。這意味着該功能可以修改已瞭解的位置的實際值。
下面是一個例子,做你解釋什麼:
http://play.golang.org/p/ufrEjmXwmB
請記住,這可能不是一個真正的程序要做到這一點的最好辦法。如果重點只是學習,那就去做吧。嘗試使用指針指針傳遞指針等等:p
對不起,在這樣的初學者問題上進入語義學,但由於「通過引用傳遞」沒有很好地定義(除了像C++這樣的語言,稱爲「引用」 ),我們大多數人都喜歡避開Go這個詞。 go中的所有東西都是按值傳遞的,包括指針,其中指針*值*被複制到參數變量中。 – JimB
感謝提醒@JimB。我已經更新了我的答案,以獲得更正確的語言。據我所知,在傳統的comp-sci教科書中,「通過引用」是明確定義的,儘管我確實在這裏錯誤地使用了它。如果答案仍然關閉,請隨時編輯,我不會冒犯:p –
是的,也許這個術語在學術意義上是明確定義的,但通俗地說它經常被錯誤地使用(例如,看看wiki文章你在「通過共享呼叫」下面鏈接,其中列出了紅寶石計數器以及社區聲稱它是「通過引用」)。 – JimB
你可以使用指針來做到這一點。 https://tour.golang.org/moretypes/1 – Snowman
這似乎將在基本文檔中得到很好的介紹。您應該先從這裏開始:https://golang.org/doc/ – JimB
由於文檔對於新手來說可能有點陡峭,這是一個非常簡單而全面的關於使用Go的基礎知識的文本:https:// www。 golang-book.com/books/intro/8 – Snowman