[13th][Day6] func

about func

有了变数、有了保留字之後,我们需要 方法/function/method/函式/func,可以让程序的结构更整洁、减少重复性 ... 之类的功能

在刚开始写 go 时,我们大部分的程序码都是放在主函式 func main() 中

package main
func main() {
    //mission 1
    //mission 2
    //mission 3
    .
    .
    .
    END
}

随着程序码规模提升,这样写法渐渐不敷使用

一个 func 动辄上百行,假设有 20 个 func 就要两千行,程序码上下卷动不易维护,也无法将程序码分离在不同档案中。

用写函式 (function) 的方式来分离程序码,函式是程序码共用的基础。物件导向的方法 (method) 是以函式为基础。

之前在聊变数时,就已经使用过一些函式了,像是在 fmt 套件的 Println 函式,可在 terminal 中印出文字。

Public vs private
依宣告规则, Go 的公开函式都是以大写开头,这是 Go 语言的一项设计

使用大小写来控管套件中函式和方法的权限

只有字母大写的函式或方法才会公开给外界使用。

来写一个简单的 hello func,并且呼叫三次:

package main
 
import (
    "fmt"
)
 
func helloGo() {
    fmt.Println("Hello ironman2021")
}
 
func main() {
    helloGo()
    helloGo()
    helloGo()
}

虽然这个函式非常简单,但可以知道,函式可以『重覆再利用』的。

parameter
函式可以加入参数 (parameter),透过参数来改变函式的行为

package main
 
import (
    "fmt"
)
 
func hello(name string) {
    fmt.Println(fmt.Sprintf("Hello %s", name))
}
 
func main() {
    hello("Eric")
    hello("William")
    hello("Amy")
}

输出为

Hello Eric
Hello William
Hello Amy

return

函式运作後,可以回传值到外层 (return value)

package main
 
import (
    "log"
    "math"
)
 
func add(a float64, b float64) float64 {
    return a + b
}
 
func main() {
    x := add(0.3, 0.4)
	fmt.Println(x)
}

x 为 add() 方法 return 的计算结果

注意!! 如果在 go 宣告了一个变数 但没有使用它 会编译失败

x declared but not used

多值回传
Go 函式允许多个回传值,如以下实例:

package main
 
import (
    "log"
)
 
func addsub(a int, b int) (int, int) {
    return a + b, a - b
}
 
func main() {
    m, n := addsub(5, 3)
 
    fmt.Println("m =", m, "n =", n)
}

输出为
m = 8 n = 2

多回传值时常用於错误处理 (error handling) 中,比方说...call API 失败, 写入 DB 失败, parseInt 失败...等 各种失败

错误处理在 golang 中是很重要的一环,避免 panic 避免服务死掉,是我们的最高原则


<<:  Day 16 : 特徵工程 tf.Tramsform 实作

>>:  [Python 爬虫这样学,一定是大拇指拉!] DAY01 - 系列文前言

DAY 18 『 画面间跳页传值 - Protocol And Delegate 』

昨天介绍完如何跳页,今天将会分享如何跳页传值。 成品: 刚执行模拟器的样子 按下 Button 後会...

Day24,试着用rancher交差Dashboard

正文 今天要来一日体验rancher server上的dashboard功能 使用racher2.6...

创建App-设定界面(一)

创建App-设定界面(一) --- 设定是App中能让使用者调整适合自己的方式,而本App的设定界面...

NNI安装在本机(Windows版)

说了好几天的概念,再不动手真的会睡着。让我们先来本机炸一炸,加深我们的学习动机。 安装前,先注意两大...

在 Lubuntu 18.04 上安装 CodeBlocks IDE 17.12

写程序,弄个 IDE 真的会方便不少,如果您是要在 ubuntu 20.04 上面使用 Code::...