GO學習筆記——程序結構(1)

程序結構

命名

  • 如果一個名字是在函數內部定義,那么它的就只在函數內部有效。如果是在函數外部定義,那么將在當前包的所有文件中都可以訪問。

  • 名字的開頭字母的大小寫決定了名字在包外的可見性。大寫外部可以訪問,小寫包內訪問。包名一般小寫。

聲明

  • Go語言主要有四種類型的聲明語句:var、const、type和func,分別對應變量、常量、類型和函數實體對象的聲明。

  • 每個源文件以包的聲明語句開始,說明該源文件是屬于哪個包。包聲明語句之后是import語句導入依賴的其它包,然后是包一級的類型、變量、常量、函數的聲明語句,包一級的各種類型的聲明語句的順序無關緊要。

變量

變量聲明的一般語法如下:

var 變量名字 類型 = 表達式

其中“類型”或“= 表達式”兩個部分可以省略其中的一個。如果省略的是類型信息,那么將根據初始化表達式來推導變量的類型信息。如果初始化表達式被省略,那么將用零值初始化該變量。

簡短變量聲明

  • 在函數內部,有一種稱為簡短變量聲明語句的形式可用于聲明和初始化局部變量。它以“名字 := 表達式”形式聲明變量,變量的類型根據表達式來自動推導

  • 請記住“:=”是一個變量聲明語句,而“=”是一個變量賦值操作。

  • 簡短變量聲明語句對已經聲明過的變量只有賦值行為。但簡短變量聲明語句中必須至少要聲明一個新的變量。而且簡短變量聲明語句只有對已經在同級詞法域聲明過的變量才和賦值操作語句等價,如果變量是在外部詞法域聲明的,那么簡短變量聲明語句將會在當前詞法域重新聲明一個新的變量。

指針

一個指針的值是另一個變量的地址。一個指針對應變量在內存中的存儲位置

new函數

  • 表達式new(T)將創建一個T類型的匿名變量,初始化為T類型的零值,然后返回變量地址,返回的指針類型為*T
  • 由于new只是一個預定義的函數,它并不是一個關鍵字,因此我們可以將new名字重新定義為別的類型。
  • 例子:

func delta(old, new int) int { return new - old }

  • 由于new被定義為int類型的變量名,因此在delta函數內部是無法使用內置的new函數的

變量的生命周期

變量的生命周期指的是在程序運行期間變量有效存在的時間間隔。

  • 包一級聲明的變量,生命周期和整個程序的運行周期是一致的
  • 局部變量的聲明周期則是動態的:從每次創建一個新變量的聲明語句開始,直到該變量不再被引用為止,然后變量的存儲空間可能被回收
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 1. Java基礎部分 基礎部分的順序:基本語法,類相關的語法,內部類的語法,繼承相關的語法,異常的語法,線程的語...
    子非魚_t_閱讀 31,742評論 18 399
  • 一、溫故而知新 1. 內存不夠怎么辦 內存簡單分配策略的問題地址空間不隔離內存使用效率低程序運行的地址不確定 關于...
    SeanCST閱讀 7,866評論 0 27
  • README文件后綴名為md。md是markdown的縮寫,markdown是一種編輯博客的語言。不過GitHub...
    MillerWang閱讀 18,200評論 0 4
  • 1、本末倒置的接口 前幾天家里的暖氣片漏水了,找單位的師傅來幫忙修,修完掛上之后,與樓上暖氣管連接的位置不是垂直的...
    旅小羊閱讀 257評論 0 0
  • 早上6點在火車上醒來,把下鋪當瑜伽墊完成了5分鐘平板支撐,簡單的瑜伽拉伸動作,大家看的目瞪口呆,嘿嘿,自己覺得好得...
    溫柔如春風閱讀 154評論 0 0