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 。
字串
字串與字串 要連在一起用 +
字串與變數 要連在一起用 ,
標準庫
像 fm
t、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 好狂
留言
張貼留言