go 學習筆記之初識 go 語言

go-index-gopher.jpg

Go 是一種開源編程語言,能夠輕鬆構建簡單,可靠,高效的軟件.php

摘錄自 github: https://github.com/golang/go,其中官網(國外): https://golang.org 和官網(國內): https://golang.google.cn/

GoGoogle 公司推出的靜態強類型,編譯型,併發型,並具備垃圾回收功能的開源編程語言,最初由 Robert Griesemer , Rob Pike ,Ken Thompson 三人主持開發,後來陸續加入其餘開發者,最終於 2009 年 11 月正式開源.html

創始人都是大神

Go 的三位主要創始人分別是: 羅伯特·格瑞史莫(Robert Griesemer),和肯·湯普遜(Ken Thompson)git

  • 羅伯特·格瑞史莫(Robert Griesemer)

JS V8 引擎,Chubby ,Java HotSpot 虛擬機,Sawzall 語言和 Strongtalk 系統github

go-index-robert-griesemer.jpg

github: https://github.com/griesemer
  • 羅勃·派克(Rob Pike)

Plan 9 操做系統和UTF-8 編碼golang

go-index-Rob-pike.png

github: https://github.com/robpike
  • 肯·湯普遜(Ken Thompson)

UNIX 操做系統 ,Plan 9 操做系統,B 語言,UTF-8 編碼docker

go-index-thompson.jpg

github: https://github.com/ken

如此厲害的三位大牛合做創做的 Go 語言還能差到哪裏去呢?編程

go-index-creator.jpg

吉祥物也很可愛

原來的 logo 是一隻可愛的囊地鼠,英文名叫 gopher.安全

go-index-logo-old.png

新的 logo 是現代化圖標,表明更快更強,體現速度和效率.網絡

go-index-logo-new.png

網上流傳甚廣的一組很萌很可愛的吉祥物,並附上 github 連接: https://github.com/tenntenn/gopher-stickers併發

go-index-logo-gopher-stickers.png

體驗 go 語言魅力

  • 案例一
fmt.Println("Hello, 世界") : 輸出字符串並換行
package main

import "fmt"

func main() {
  fmt.Println("Hello, 世界")
}

go-index-helloworld.png

  • 案例二
a, b = b, a : 互換變量 ab 的值,而其餘語言通常都須要引入臨時變量.
package main

import "fmt"

func main() {
    var a = 3
    var b = 4
    fmt.Println(a, b)
    a, b = b, a
    fmt.Println(a, b)
}

go-index-exchange.png

  • 案例三
go + chan 關鍵字輕鬆完成並行計算
package main

import (
    "fmt"
    "math"
)

func main() {
    fmt.Println(pi(5000))
}

func pi(n int) float64 {
    ch := make(chan float64)
    for k := 0; k <= n; k++ {
        go term(ch, float64(k))
    }
    f := 0.0
    for k := 0; k <= n; k++ {
        f += <-ch
    }
    return f
}

func term(ch chan float64, k float64) {
    ch <- 4 * math.Pow(-1, k) / (2*k + 1)
}

go-index-concurrentpi.png

到底好用很差用

Go 語言是雲計算時代的 C 語言也稱爲21 世紀的 C 語言,因而可知,Go 的地位非同通常.

Go 語言的誕生是爲了提升生產效率,專門對多處理器系統應用程序的編程進行了優化,使用Go編譯的程序能夠媲美C或C++代碼的速度,並且更加安全,支持並行進程.

  • 運行效率高,開發高效,部署簡單.
運行效率高是由於編譯性語言與解釋性語言相比,開發高效是語法簡單,部署簡單是直接部署編譯後的程序.
  • 語言層面支持併發,易於利用多核實現併發.
不一樣於 php,只須要 go 配合 channel 便可完成進程或線程所作的工做.
  • 內置 runtime 並支持垃圾回收
相似 Java 虛擬機支持垃圾回收,沒必要手動進行內存管理.
  • 簡單易學,豐富的標準庫,強大的網絡庫.
學習成本低,語法簡單但表達能力強,支持函數式編程,面向對象編程等多種編程範式.
  • 內置強大的工具(gofmt),跨平臺編譯,內嵌C支持.
不一樣的人有不一樣的代碼風格,可轉化統一風格

志同道合有幾人

  • Docker : 是爲開發人員構建和運行應用程序而構建的平臺

go-index-docker.png

https://www.docker.com/
  • Kubernetes : 自動化容器部署,擴展,管理的應用程序

go-index-k8s.png

https://kubernetes.io/
  • Etcd : 分佈式鍵值對存儲系統

go-index-etcd.png

https://etcd.io/
  • baidu-netdisk-downloaderx : 一款圖形界面的百度網盤不限速下載器,支持 Windows , LinuxMac

go-index-baidu-netdisk-downloaderx-BND2.png

https://github.com/b3log/baidu-netdisk-downloaderx
  • pan-light : 百度網盤不限速客戶端, golang + qt5, 跨平臺圖形界面

go-index-pan-light.png

https://github.com/peterq/pan-light

自學技術哪家強

自問自答解疑惑

  • gogolang 是什麼關係?

gogolang 的簡稱,golanggo language 的縮寫,即 go 語言.

  • go 的經常使用 IDE 有哪些?

獨立集成工具主要有 LiteIDEGoLand 兩種,可是常見 IDE 基本上均提供各類 Go 插件,支持 Windows ,MacOSLinux 常見操做系統.

  • go 的常見 Web 開發框架有哪些?

Beego ,IrisGin 等,國人用的比較可能是 Beego,目前資料也比較齊全.

無總結不成文章

GoGoogle 出品的開源編程語言,出身名門註定不凡,而且擁有十分活躍的社區環境.

國內使用 Go 語言比較早的公司主要有七牛雲和 beego,其中七牛雲主要是雲存儲方面的業務,這也正是 Go 支持高併發分佈式的特點,而 BeegoGoWeb 開發框架,支持 MVC 編程模型,不愧是國人開發深受國人喜好.

同時,今年著名的 bilibili 源代碼泄露事件也讓咱們看到了 Go 的身影,側面說明了 Go 愈來愈流行,不愧是 21 世紀的 C 語言啊!

好了,暫時沒有別的廢話了,本文到此爲止,下一章將開始介紹 Go 語言的環境搭建與 IDE 的基本配置,敬請期待.

相關文章
相關標籤/搜索