Golang 傳遞 小抄

來源:互聯網
上載者:User
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。

一些學習總結


1、GoLang裡面interface類型式一切類型的基底類型,一個函數的參數如果始inteface{}

說明可以接受一切類型,只要這個類型中包含需要的那個方法,調用時候就不會失敗;

func test(i interface{}){    i.Get()}


2、方法定義中可以制定某個類型(或者指標)是其調用者,方法的返回可以按照名稱返回;

func (p *A) test(i int){}func test()(p int){    p:=1    return}


3、switch流程可以強制穿透功能;


4、語意上對並發的支援,用go關鍵詞;


5、make關鍵詞只能建立channel,數群組類型;其它對象的建立用new關鍵詞;


6、方法內用new關鍵詞建立的對象(指標)可以返回,用&標記也可以返回本地指標;


7、方法參數如果是數字,除了類型相同外,大小必須明確,否則視為slice類型;

數組傳參是按照值傳遞,map、slice按照引用傳遞;


8、數組,slice,map結構的遍曆用range實現;


9、不支援指標地址的++操作;


10、type A struct{} 、type B A 、type C struct{A} 三個類型中A和C可以共用方法,B和A不共用方法;


11、反射(自省)可以獲得類型的欄位和方法資訊,和Python/Java/CSharp類似,沒有深入研究;


12、defer 在方法返回時調用,如果方法中有多個go 方法,會在每個go 方法調用完後被執行;


13、類型轉換,基本類型(string,bytes,int,float)之間的轉換通過內建方法實現

struct通過 struct名稱(變數名稱),也可以通過reflect及switch實現(介面變數名.(type));


14、change/select/chan 類似與Unix中的管道概念,支援讀、寫操作;


15、對於複雜類型的格式化輸出可以用 %#v ,這個格式化出來的資訊比較全面;

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.