2014-10-03 07:56

咳咳我這個菜鳥是寫 PHP,後來波卡建議我去學 C,但我……對我荒廢了,所以 C 語言筆記沒有後續就這樣停留在去年。 再來波卡實在是看不下去,於是乎我就開始學 Golang 了。
……等等到底為什麼馬上從學 C 跑去學 Golang 呢?

一日
P:「所以你 C 還記得多少?」
我:「應該都忘記了……」
P:「既然你C都忘的差不多了,那就開始學Golang吧!」
我:「這樣可以嗎!!!」
P:「你可以發 Facebook 表達你很震驚。」



這地鼠土撥鼠初看很欠揍,再看還是很欠揍,某天我終於知道為什麼了……就是一臉「你這傻子還不快來寫 Golang」
一切都從 Tour 開始,當天就覺得自己的世界好像有一角崩塌了

我:「上次我報名了 Golang Workshop 結果沒有去,但是我有稍微爬了一下 Tour……」(這就是無意義的掙扎)
P:「你覺得 Golang 怎樣?」
我:「滿滿的『因為我寫OO程式語言時候寫的太繁瑣了,所以我一定要想辦法簡寫簡寫簡寫簡寫』這樣的怨念。」
我如果沒有看錯的話,波卡應該笑了一下……


  1. 不能 import 了卻不用,不能宣告了變數卻不用
    會編譯不過(降低垃圾程式碼的一步)

其實 Golang 的結尾是 ;
但為什麼你都看不到有人寫寫呢?
波卡:「因為編譯器會幫你補 ;,幹麼要自己打XD」

1
2
3
4
5
6
7
package main

import "fmt"

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

光從 func 就看的出來怨念頗深,一定要這麼懶惰嗎!此時的我還不知道這只是懶惰的第一步而已

1
2
3
4
import(
    "fmt"
    "math/rand"
)
1
2
import "fmt"
import "math/rand"

兩者相同,但因為懶惰嘛所以當然都寫第一種方式。

1
2
3
4
5
6
7
8
9
10
11
12
package main

import (
    "fmt"
    "math"
    "math/rand"
)

func main() {
      fmt.Println(math.pi)
    fmt.Println("My favorite number is", rand.Intn(10))
}

import “math/rand” 這行也就是 import rand “math/rand",所以使用 rand 底頭的 Intn 則是 rand.Intn
另外這個會編譯不過,math.pi 要改成 math.Pi
辨認一個 function 是 Public/Private,看第一個字母就就行了,大寫是 Public

1
2
3
4
5
6
7
8
9
10
11
package main

import "fmt"

func add(x int, y int) int {
  return x + y
}

func main() {
  fmt.Println(add(42, 13))
}

先宣告變數再宣告該變數的資料型態,另外也可以把 x int, y int 簡寫成 x, y int
或許應該說,就是為了可以這樣簡寫才不用 C 的先宣告資料型態再給變數名稱……

1
2
3
4
5
6
7
8
9
10
11
12
package main

import "fmt"

func swap(x, y string) (string, string) {
    return y, x
}

func main() {
    a, b := swap("hello", "world")
    fmt.Println(a, b)
}

:= 是什麼東西呢?
a := 5 是 var a int = 5 的簡寫
……你們一定要這麼懶惰嗎(真的會寫上癮)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
package main

import "fmt"

func split(sum int) (x, y int) {
    x = sum * 4 / 9
    y = sum - x
    return
}


func main() {
    fmt.Println(split(17))
}

我來回看了 split 那四行後揉一揉眼睛。
波卡:「回傳值的洞都已經挖好啦,直接 return 就好啦!」
……你們一定要這麼懶惰嗎?

Comments