Day14-Go函式function

前言

在此篇文章之前,大部分的程序码都是建立在主函式 (main function) 中,但随着需求更加复杂,专案规模越来越大,若是将所有功能都包在主函式里头,那可读性会很差,所以程序设计师撰写函式以来分离程序码,将功能切出来,独立写成一个函式,也实现程序码共用的基础。

撰写函式

这里先介绍一个简单的函式如何撰写:

package main
 
import (
   "fmt"
)
 
func hello() {
   fmt.Println("Hello Rookie")
}
func main() {
   hello() // Hello Rookie
}

这是一个很简单的函式,我们将印出的功能包在 hello 这个函式里头,最後在主程序里呼叫 hello 这个函式,来达到相同的目的,我们下面接着示范更多函式的功能。

撰写函式(输入参数)
这边示范如何将参数带入函式,这会使得能够更灵活使用函式:

package main
 
import (
   "fmt"
)
 
func hello(name string) {
   fmt.Println("Hello", name)
}
func main() {
   hello("Jack") // Hello Jack
   hello("Zhen") // Hello Zhen
}

撰写函式(输入多个参数)

当然函式也不是只能带入一个参数,可以带入多个参数,这些参数型态也是可以依照自己需求调整:

package main
 
import (
   "fmt"
)
 
func hello(name1, name2 string) {
   fmt.Println("Hello", name1, "and", name2)
}
func main() {
   hello("Jack", "Zhen") // Hello Jack and Zhen
}

撰写函式(输入不定长度参数)

Go 语言的函式也支援输入不定长度的参数:

package main
 
import (
   "fmt"
)
 
func add(x ...int) {
   var total int
   for _, xi := range x {
       total += xi
   }
   fmt.Println(total)
}
func main() {
   add(1,2,3,4,5) // 15
}

撰写函式(回传return)

大部分情况下,我们通常不会直接印出值来,而是以回传值来取得自己要的数据,这时就可以用 return 来实现:

package main
 
import (
   "fmt"
)
 
func add(x, y int) int{
   return x + y
}
func main() {
   fmt.Println(add(1, 2) == 3) // true
}

撰写函式(回传命名)

你也可以对回传值命:

package main
 
import (
   "fmt"
)
 
func add(x, y int) (z int){
   z = x + y
   return
}
func main() {
   fmt.Println(add(1, 2) == 3) // true
}

init函式

init 函式是个特殊的函示,如果一段程序码内包含着 init 函式,则在执行整个程序码时,会优先值些 init里的程序码,通常需要初始化一些外部资源时,会将这些程序码写在init 函式里,以下是 Go 官方网站的例子:

func init() {
   if user == "" {
       log.Fatal("$USER not set")
   }
   if home == "" {
       home = "/home/" + user
   }
   if gopath == "" {
       gopath = home + "/go"
   }
   // gopath may be overridden by --gopath flag on command line.
   flag.StringVar(&gopath, "gopath", gopath, "override default GOPATH")
}

结语

今天介绍 Go 语言基本的函示撰写方法,函式撰写变化其实还有很多种,可以因应自己的需求做调整,希望几天介绍能使各位读者对 Go 语言的函式有初步的了解,感谢您今天的阅读!


<<:  day 14 - drone 的go-test & golangci-lint

>>:  Day 10. 实实在在的实体 - Vue Instance

Android Studio 菜鸟笔记本-Day 27-BottomNavigationView的应用

昨天介绍了BottomNavigationView的使用方法,今天我要分享使用BottomNavig...

CSS Of Norton Antivirus By InstallNSetup.Com

Online threats, such as spyware, phishing and iden...

第46天~

这个得上一篇:https://ithelp.ithome.com.tw/articles/10258...

创建App-自创简略帐号设定

创建App-自创简略帐号设定 由於App的最後设定界面的延伸界面没有设计与排版,因此考虑到学生相关的...

[Day 4] Leetcode 764. Largest Plus Sign (C++)

前言 今天的题目在这里:764. Largest Plus Sign,是一题medium的题目。我直...