Day 34 - Golang 紀錄

Golang 紀錄

關於 GO 有幾個特點

  • 開源!!跨平台!!Coding Style!!
  • 語法簡潔,go的關鍵字不多和C有很多關鍵字重複
  • 效能,平均下來是輸C但贏其他語言如Ruby,php,java,python
  • goroutine,最大特色之一,輕巧 低消耗資源的特性
  • 可以使用c library

變數

跟c 有點不一樣 type 是寫在後面

var a int
var b bool
var str string

var (
    a int
    b bool
    str string
)

同一類型的多個變化可在同一行,如:

var a, b, c int

初始化

var x, y, z int = 1, 2, 3

:= 宣告+初始化變數

型態

這個非常重要,如果有學過C大概都知道。
第一次接觸的時候,都快被搞死了,幸好GO的編譯會告訴你錯在哪。

型態不一致的話,編譯該程序的時候會錯誤
cannot use a + a (type int) as type int32 in assignment
要記得轉換,使用 Math時,型態幾乎都是 float64 。

字串

字串與字串 要連在一起用 +
字串與變數 要連在一起用 ,

標準庫

fmt、os 等這樣具有常用功能的内置包在 Go 語言中有 150 個以上,他們被稱為標準褲,大部分(一些底層的除外)内置於 Go 本身。完整列表可以在 Go Walker 查看。

fmt.Println : 代表要輸出的資訊

Coding Style

  • 強制性的編譯風格
  • 宣告變數一定要用到

違反規範,編譯不會過
go 有指令可以幫你直格式化 code style

import (
    "fmt"
    "math"
)

迴圈 for

go 只有 for , for 沒有(){} 是必須的, 其餘跟c / java一樣,可以讓前置、後置語句為空

    for i := 0; i < 10; i++ {
            i += i
    }
    sum := 1
    for ; sum < 1000; {
            sum += sum
    }

while 的寫法

    index := 1
for index < 1000 {
    index += index
}

IF

if 語句除了沒有()之外(甚至強制不能使用它們),看起來跟 C 或者 Java 中的一樣,而 {} 是必須的。

    if x < 0 {
            return -1
    }

跟「 for 」一樣,「 if 」 語句可以在條件之前執行一個簡單的語句。

    func pow(x, n, lim float64) float64 {
        if v := math.Pow(x, n); v < lim {
            return v
        }
        return lim
    }

Slice (切片)

切片(slice)是對數組一個連續片段的引用(該數組我們稱之為相關數組,通常是匿名的),所以切片是一個引用類型(因此更類似於C/C++ 中的數組類型,或者Python 中的list 類型)。

陣列要指定大小元素,切片不需要(array有長度slice沒長度)

優點因為切片是引用,所以它們不需要使用額外的內存並且比使用數組更有效率,所以在Go代碼中切片比數組更常用。

聲明切片的格式是:var identifier []type(不需要說明長度)。

建立切片,初始化預設值

sequence := []float64{1}

寫值進去

sequence = append(sequence, 2)

官網 (可以直接在上面編譯,也有目前可用的 packages 文件):
https://golang.org/#

初學 Golang 30 天
http://ithelp.ithome.com.tw/users/20079210/ironman/721?page=1

《The Way to Go》中文译本,中文正式名《Go入门指南》
https://github.com/Unknwon/the-way-to-go_ZH_CN

Go 语言教程
http://www.runoob.com/go/go-tutorial.html

淺談 golang
https://hsinyu.gitbooks.io/golang_note/content/index.html


因緣際會,接觸了GO,沒有研究太多,簡單紀錄一下有用到的,感覺還蠻有趣的。
強硬的code style型態,還有slice 的用法,跟往常寫PHP, JS的時候好不一樣。執行速度真的太快了,想試一下寫法都給我0ms..我是要看出什麼=_=


#一開始就被型態打敗
#想引用個math,不如自己寫個func
#還好GO會提示
#slice跟array 只知道slice比較好
#程序小看不太出來速度差異
#0ms 好狂

留言