Go語言入門自學(一)

GoLang

首先介紹下GO語言的起源

Go語言是一個開源的編程語言,它能讓構造簡單,可靠且高效的軟件變得容易。
GO是從2007年末由Robert Griesemer, Rob Pike, Ken Thompson主持開發。2009年11月開源,在2012年早些時候發布了GO 1穩定版本。現在GO的開發已經是完全開放的,并且擁有一個活躍的社區。

Go語言最主要的特性

  • 自動垃圾回收
  • 更豐富的內置類型
  • 函數多返回值
  • 錯誤處理
  • 匿名函數和閉包
  • 類型和接口
  • 并發編程
  • 反射
  • 語言交互性

Go語言結構

在學習之前先來了解下Go語言最簡單程序結構。
Go語言的基礎組成有一下幾個部分

  • 包聲明
  • 引入包
  • 函數
  • 變量
  • 語句&表達式
  • 注釋
package main
import "fmt"
func main(){
    fmt.Println("My,first Go applition")
}

讓我們來看下以上程序的各個部分

  • package main定義了包名,你必須在源文件中非注釋的第一行指明這個文件屬于哪個包,每個Go應用程序都包含一個名為main的包。
  • import "fmt"是告訴Go編輯器這個程序需要使用fmt包(的函數,或其他元素),fmt包實現了格式化IO(輸入/輸出)的函數。
  • func main()是程序開始執行的函數。main函數是每一個可執行程序所必須包含的,一般來說都是在啟動后第一個執行的函數(如果有init()函數則會先執行該函數)
  • /*...*/是Go語言的注釋標識。
  • fmt.Println(...)可以將字符串輸出到控制臺,并在最后自動增加換行字符 \n,使用 fmt.Print("My,first Go applition\n") 可以得到相同的結果。
  • 當標識符(包括常量、變量、類型、函數名、結構字段等等)以一個大寫字母開頭,如:Group1,那么使用這種形式的標識符的對象就可以被外部包的代碼所使用(客戶端程序需要先導入這個包),這被稱為導出(像面向對象語言中的 public);標識符如果以小寫字母開頭,則對包外是不可見的,但是他們在整個包的內部是可見并且可用的(像面向對象語言中的 protected )。

Go語言基礎語法

Go標記

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

fmt.Println("Hello, World!")
1. fmt
2. .
3. Println
4. (
5. "Hello, World!"
6. )

行分隔符

在 Go 程序中,一行代表一個語句結束。每個語句不需要像 C 家族中的其它語言一樣以分號 ; 結尾,因為這些工作都將由 Go 編譯器自動完成。
如果你打算將多個語句寫在同一行,它們則必須使用 ; 人為區分,但在實際開發中我們并不鼓勵這種做法。

標識符

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

//有效的標識符
mahesh   kumar   abc   move_name   a_123
myname50   _temp   j   a23b9   retVal
//無效的標識符
123asd //(以數字開頭)
case   //(Go 語言的關鍵字)
a+b    //(運算符是不允許的)

關鍵字

下面列舉了 Go 代碼中會使用到的 25 個關鍵字或保留字

break default func interface select
case defer go map struct
chan else goto package switch
const fallthrough if range type
continue for import return var

除了以上介紹的這些關鍵字,Go 語言還有 36 個預定義標識符

append bool byte cap close complex complex64 complex128 uint16
copy false float32 float64 imag int int8 int16 uint32
int32 int64 iota len make new nil panic uint64
print println real recover string true uint uint8 uintptr

程序一般由關鍵字、常量、變量、運算符、類型和函數組成。
程序中可能會使用到這些分隔符:括號 (),中括號 [] 和大括號 {}。
程序中可能會使用到這些標點符號:.、,、;、: 和 …

Go 語言的空格

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

var age int;

Go語言結構小結

導入多包時

import "fmt"
import "io"
//也可以
import {
    "fmt",
    "io"
}

Go 程序的一般結構: basic_structure.go

//當前程序包名
package main
//導入其他包
import "fmt"
//常量定義
const PI = 3.14
//全局變量聲明
var name = "duxian"
//一般類型聲明
type newType int
//結構的聲明
type gopher struct()
//接口的聲明
type golang interface()
//由main函數作為程序入口點啟動
func main(){
    Println(name)
}

GO語言的數據類型

在Go編程語言中,數據類型用于聲明函數和變量。
數據類型的出現是為了把數據分成所需內存大小不同的數據,編程的時候需要用大數據的時候才需要申請大內存,就可以充分利用內存。

Go語言按類別有以下幾種數據類型

  • 布爾型
    布爾型的值只可以是常量 true 或者 false。一個簡單的例子:var b bool = true。
  • 數字類型
    整型 int 和浮點型 float32、float64,Go 語言支持整型和浮點型數字,并且原生支持復數,其中位的運算采用補碼。
  • 字符竄類型
    Go語言的字符串的字節使用UTF-8編碼標識Unicode文本
  • 派生類型
  • 指針類型
  • 數組類型
  • 結構化類型
  • Channel類型
  • 函數類型
  • 切片類型
  • 接口類型
  • Map類型

數字類型

整數型

  • uint8
    無符號 8 位整型 (0 到 255)
  • uint16
    無符號 16 位整型 (0 到 65535)
  • uint32
    無符號 32 位整形 (0 到 4294967295)
  • uint64
    無符號 64 位整型 (0 到 18446744073709551615)
  • int8
    有符號 8 位整型 (-128 到 127)
  • int16
    有符號 16 位整型 (-32768 到 32767)
  • int32
    有符號 32 位整型 (-2147483648 到 2147483647)
  • int64
    有符號 64 位整型 (-9223372036854775808 到 9223372036854775807)

浮點型

  • float32
    IEEE-754 32位浮點型數
  • float64
    IEEE-754 64位浮點型數
  • complex64
    32 位實數和虛數
  • complex128
    64 位實數和虛數

其他數字類型

  • byte
    類似 uint8
  • rune
    類似 int32
  • uint
    32 或 64 位
  • int
    與 uint 一樣大小
  • uintptr
    無符號整型,用于存放一個指針

Go語言變量

變量來源于數學,是計算機語言中能存儲計算結果或能表示值抽象概念。變量可以通過變量名訪問。
Go 語言變量名用字母,數字,下劃線組成。其中首字母不能使數字。
聲明變量的一般形式是使用var關鍵字

var identifier type

變量聲明

//第一種,指定變量類型,聲明后若不賦值,使用默認值。
var v_name v_type
v_name = value
//第二種,根據值自行判定變量類型。
var v_name = value
//第三種,省略var, 注意 :=左側的變量不應該是已經聲明過的,否則會導致編譯錯誤。
v_name := value
//// 例如
var a int = 10
var b = 10
c := 10

多變量聲明

//類型相同多個變量, 非全局變量
var vname1, vname2, vname3 type
vname1, vname2, vname3 = v1, v2, v3

var vname1, vname2, vname3 = v1, v2, v3 //和python很像,不需要顯示聲明類型,自動推斷

vname1, vname2, vname3 := v1, v2, v3 //出現在:=左側的變量不應該是已經被聲明過的,否則會導致編譯錯誤

// 這種因式分解關鍵字的寫法一般用于聲明全局變量
var (
    vname1 v_type1
    vname2 v_type2
)

值類型和引用類型

所有像 int、float、bool 和 string 這些基本類型都屬于值類型

簡短形式,使用 := 賦值操作符

全局變量是允許聲明但不使用,但是函數內變量聲明后必須使用否則會得到錯誤 “變量 declared and not used”

自學來源

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,238評論 6 531
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,430評論 3 415
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,134評論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,893評論 1 309
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,653評論 6 408
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,136評論 1 323
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,212評論 3 441
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,372評論 0 288
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,888評論 1 334
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,738評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,939評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,482評論 5 359
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,179評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,588評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,829評論 1 283
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,610評論 3 391
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,916評論 2 372

推薦閱讀更多精彩內容

  • 官方網站:https://golang.org/標準庫文檔:https://golang.org/pkg/在線編碼...
    技術學習閱讀 2,329評論 2 39
  • 前言 人生苦多,快來 Kotlin ,快速學習Kotlin! 什么是Kotlin? Kotlin 是種靜態類型編程...
    任半生囂狂閱讀 26,243評論 9 118
  • ?1 C語言程序的結構認識 用一個簡單的c程序例子,介紹c語言的基本構成、格式、以及良好的書寫風格,使讀者對c語...
    CONLYOUC閱讀 8,724評論 9 66
  • 在去往學校的汽車上,心情并不是多么美好。陰雨綿綿的天氣,不是靠窗的座位,無聊的刷著手機,看著紛紛嚷嚷的世間...
    冷澈12閱讀 497評論 0 0
  • 179站請大家關注6碼---4碼 單挑參考 參考就是 【殺1-2碼 0=0】 組合2配46拖79 單挑 組選9碼 ...
    179幸運彩吧閱讀 198評論 0 0