在此篇文章之前,大部分的程序码都是建立在主函式 (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 来实现:
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 函式里,以下是 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
昨天介绍了BottomNavigationView的使用方法,今天我要分享使用BottomNavig...
Online threats, such as spyware, phishing and iden...
这个得上一篇:https://ithelp.ithome.com.tw/articles/10258...
创建App-自创简略帐号设定 由於App的最後设定界面的延伸界面没有设计与排版,因此考虑到学生相关的...
前言 今天的题目在这里:764. Largest Plus Sign,是一题medium的题目。我直...