0X01 語言結構 基本語法和數據類型

1.語言結構

從 helloworld 分析:

package main

import "fmt"

func main() {
   fmt.Println("Hello, World!")
}

第一行代碼 package main 定義了包名。你必須在源文件中非注釋的第一行指明這個文件屬于哪個包,如:package main。package main表示一個可獨立執行的程序,每個 Go 應用程序都包含一個名為 main 的包。

下一行 import "fmt" 告訴 Go 編譯器這個程序需要使用 fmt 包(的函數,或其他元素),fmt 包實現了格式化 IO(輸入/輸出)的函數。

下一行 func main() 是程序開始執行的函數。main 函數是每一個可執行程序所必須包含的,一般來說都是在啟動后第一個執行的函數(如果有 init() 函數則會先執行該函數)。

下一行 /.../ 是注釋,在程序執行時將被忽略。單行注釋是最常見的注釋形式,你可以在任何地方使用以 // 開頭的單行注釋。多行注釋也叫塊注釋,均已以 /* 開頭,并以 */ 結尾,且不可以嵌套使用,多行注釋一般用于包的文檔描述或注釋成塊的代碼片段。

下一行 fmt.Println(...) 可以將字符串輸出到控制臺,并在最后自動增加換行字符 \n。 使用 fmt.Print("hello, world\n") 可以得到相同的結果。
Print 和 Println 這兩個函數也支持使用變量,如:fmt.Println(arr)。如果沒有特別指定,它們會以默認的打印格式將變量 arr 輸出到控制臺。

當標識符(包括常量、變量、類型、函數名、結構字段等等)以一個大寫字母開頭,如:Group1,那么使用這種形式的標識符的對象就可以被外部包的代碼所使用(客戶端程序需要先導入這個包),這被稱為導出(像面向對象語言中的 public);標識符如果以小寫字母開頭,則對包外是不可見的,但是他們在整個包的內部是可見并且可用的(像面向對象語言中的 protected )。

2.執行 Go 程序的過程

打開編輯器如Sublime,將以上代碼添加到編輯器中。將以上代碼保存為 hello.go,
打開命令行,并進入程序文件保存的目錄中。

image.png

輸入命令 go run hello.go 并按回車執行代碼。

這段代碼運行后輸出helloworld


image.png

3.基本語法

Go 標記

Go 程序可以由多個標記組成,可以是關鍵字,標識符,常量,字符串,符號。如以下 GO 語句由 6 個標記組成(--區分):

fmt.Println("Hello, World!")
fmt  -- .  --  Println -- ( -- "Hello, World!"  -- )
行分隔符

在 Go 程序中,一行代表一個語句結束。每個語句不需要像 其它語言一樣以分號 ; 結尾,因為這些工作都將由 Go 編譯器自動完成。

注釋

注釋不會被編譯,每一個包應該有相關注釋。
單行注釋是最常見的注釋形式,你可以在任何地方使用以 // 開頭的單行注釋。多行注釋也叫塊注釋,均已以 /* 開頭,并以 */ 結尾。如:

  // 單行注釋
  /*
    Author by w3cschool菜鳥教程
    我是多行注釋
  */
標識符

標識符用來命名變量、類型等程序實體。一個標識符實際上就是一個或是多個字母(AZ和az)數字(0~9)、下劃線_組成的序列,但是第一個字符必須是字母或下劃線而不能是數字。

關鍵字
image.png
Go 語言的空格

Go 語言中變量的聲明必須使用空格隔開,如:

 var age int;

語句中適當使用空格能讓程序看易閱讀。
在變量與運算符間加入空格,程序看起來更加美觀,如:

 fruit = apples + oranges; 

4數據類型

在 Go 編程語言中,數據類型用于聲明函數和變量。

數據類型的出現是為了把數據分成所需內存大小不同的數據,編程的時候需要用大數據的時候才需要申請大內存,就可以充分利用內存。
Go 語言按類別有以下幾種數據類型:

1 布爾型
布爾型的值只可以是常量 true 或者 false。
一個簡單的例子:

 var b bool = true。

2 數字類型
整型 int 和浮點型 float,Go 語言支持整型和浮點型數字,并且原生支持復數,其中位的運算采用補碼。

3 字符串類型:
字符串就是一串固定長度的字符連接起來的字符序列。Go的字符串是由單個字節連接起來的。Go語言的字符串的字節使用UTF-8編碼標識Unicode文本。

4 派生類型:
包括:
(a) 指針類型(Pointer)
(b) 數組類型
(c) 結構化類型(struct)
(d) Channel 類型
(e) 函數類型
(f) 切片類型
(g) 接口類型(interface)
(h) Map 類型

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 示例 包的概念、導入與可見性 包是結構化代碼的一種方式:每個程序都由包(通常簡稱為 pkg)的概念組成,可以使用自...
    若與閱讀 1,448評論 0 7
  • Spring Cloud為開發人員提供了快速構建分布式系統中一些常見模式的工具(例如配置管理,服務發現,斷路器,智...
    卡卡羅2017閱讀 134,837評論 18 139
  • 官方網站:https://golang.org/標準庫文檔:https://golang.org/pkg/在線編碼...
    技術學習閱讀 2,329評論 2 39
  • 前言 人生苦多,快來 Kotlin ,快速學習Kotlin! 什么是Kotlin? Kotlin 是種靜態類型編程...
    任半生囂狂閱讀 26,252評論 9 118
  • 他可以為她戒掉安眠藥,她可以讓他戒掉安眠藥。因為彼此的懷抱中擁有彼此。
    長鼻子的矮兔子閱讀 156評論 0 0