Byte Ebi's Logo

Byte Ebi 🍤

每天一小口,蝦米變鯨魚

[A Tour of Go 學習筆記] 01 Packages 和 Functions

使用官方教學瞭解 Go 語言基本套件包和函數的基礎

Ray

初入 Golang 的世界,首先我們使用官方教學:A Tour of Go 來認識基本的 Golang 使用
本篇包含基本套件包和函數的基礎

Hello World

第一個就是跑不掉的Hello World

package main

import "fmt"

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

Packages

每個 Go 語言程式都是由 packages 組成
程式會從 package main開始執行

import

底下範例中,引入了fmtmath/rand兩個套件包
按照慣例 package 的名稱與導入路徑的最後一個元素相同
例如math/rand中的方法皆以package rand開始

package main

import (
	"fmt"
	"math/rand"
)

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

除了將要引入的套件寫在import括弧內的「分組導入」
還有另一種導入方式是寫成多行的 import,但是分組導入是比較好的做法

package main

import "fmt"
import "math"

func main() {
	fmt.Printf("Now you have %g problems.\n", math.Sqrt(7))
}

exported name

在 Go 中如果是以大寫字母開頭,則代表他是被導出的、可以在外部使用的
例如:Pizza就是一個 exported name,而在math package 裡的Pi也一樣
pizzapi就不是一個 exported name,因為不是使用大寫開頭

當在使用 package 的時候,你只能呼叫 exported name 的內容
無法從外部使用任何非導出的內容!

package main

import (
	"fmt"
	"math"
)

func main() {
	fmt.Println(math.Pi)
}

Functions

和其他語言一樣,一個函數可以不傳入參數或傳入多個參數
範例中的add函數就接收了兩個int型別的參數
要注意的是型別是定義在參數「後面」

package main

import "fmt"

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

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

/*
>>> 55
*/

如果是傳入連續多個同樣型別的參數,可以忽略前面幾個參數的型別宣告
只在最後一個後宣告,把x int, y int換成x, y int

package main

import "fmt"

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

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

/*
>>> 55
*/

回傳多個值

一個函數可以返回任意數量的結果

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)
}

/*
>>> world hello
*/

也可以對回傳值進行命名
在函數的最上方將回傳值命名後,會被視為函數內的變數

不帶任何參數的return會回傳已經命名好的回傳值,也就是直接返回(“naked” return)
回傳值命名應具有意義,可以做為文件使用
Naked return 只應該被用在簡短的函數中,因為在比較長的函數中這麼做會影響程式可讀性

package main

import "fmt"

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

func main() {
	fmt.Println(split(19))
}
/*
>>> 4 5
*/

最新文章

Category

Tag