您好,登錄后才能下訂單哦!
本篇內容主要講解“Go語言基礎函數有什么作用”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“Go語言基礎函數有什么作用”吧!
為什么需要函數
函數,在所有編程語言中都叫函數,Java,PHP,Python,JS等,統一都叫函數。
函數的作用
一般是這樣形容的:函數可以將重復的,或者特定功能的,封裝成一個方便調用的東西。
注:在Go中,函數是支持閉包的。
在沒有使用函數時
代碼
package main import "fmt" func main() { //模擬一個打開文件,寫入一行內容進入文件,在關閉文件的功能 var file_name = "a.txt" //文件名 var w_content = "愛我中華" //寫入的內容 fmt.Println(fmt.Sprintf("打開 %s 文件",file_name)) fmt.Println(fmt.Sprintf("向 %s 文件寫入了 %s ", file_name, w_content)) fmt.Println(fmt.Sprintf("關閉 %s 文件",file_name)) //如果再再向其他文件寫入內容,還需要復制一次 var file_name2 = "b.txt" //文件名 var w_content2 = "中國威武" //寫入的內容 fmt.Println(fmt.Sprintf("打開 %s 文件",file_name2)) fmt.Println(fmt.Sprintf("向 %s 文件寫入了 %s ", file_name2, w_content2)) fmt.Println(fmt.Sprintf("關閉 %s 文件",file_name2)) }
使用函數后
將相同功能封裝成函數。
package main import "fmt" func w_file(filename string, w_content string) { fmt.Println(fmt.Sprintf("打開 %s 文件", filename)) fmt.Println(fmt.Sprintf("向 %s 文件寫入了 %s ", filename, w_content)) fmt.Println(fmt.Sprintf("關閉 %s 文件", filename)) } func main() { //將相同功能封裝成函數 w_file("a.txt", "愛我中華") w_file("b.txt", "中國威武") }
上述代碼執行的結果都如下
ps:但是可以明顯看到,使用函數將相同功能抽出來,代碼會變的簡單,整潔。
函數使用
函數名命名規則
函數命名盡量以駝峰命名,例如:getName,connectData等。
語法
在Go中,定義函數語言用到func關鍵字。
func 函數名([參數1 參數類型1,參數2 參數類型2,...]) [(返回值 返回值類型,...)]{ 邏輯代碼 } //中括號表示可選參數
無參數,無返回值
package main import "fmt" func say1() { fmt.Println("我終于會說話了...") }
有參數,無返回值
func say2(c string) { fmt.Println("我終于會說" + c + "了") }
有或者無參數,有返回值
func say3(c string) (string) { fmt.Println("我終于會說" + c + "了") return "哦耶" }
main函數
func main() { say1() say2("你好哇") result := say3("你好哇") fmt.Printf(result) }
結果
package main import "fmt" func say() string{ fmt.Println("我終于會說話了...") return "" } func main() { //函數名+括號調用函數 say() //結果:我終于會說話了... }
注:如果函數有返回值,可以不接收。
函數參數特性
在Go中,如果函數參數都是統一類型,可以這樣寫。
//arg1, arg2, arg3, arg4參數類型都是string func say(arg1, arg2, arg3, arg4 string) { fmt.Println("我終于會說話了...") } //arg1,arg2參數是int類型,arg4,arg4是string類型, func say(arg1, arg2, int, arg3, arg4 string) { //表示arg1, arg2, arg3, arg4參數類型都是string fmt.Println("我終于會說話了...") }
大概意思就是,如果參數不寫類型,會以后面碰到的類型為準。
函數的...參數
...參數,也叫可變長參數,有點像Python中的*args。
功能是當不知道接收多少個參數時,接收多的參數會放在...中。
...參數需要放在最后面。
代碼
package main import "fmt" func say(name string, content ...string) { fmt.Println(content) //結果:[666 雙擊 ok 哦耶] fmt.Printf("%T\n", content) //結果:[]string,是切片類型 fmt.Println("我是"+name, "我說了:") //循環切片 for _, v := range content { fmt.Println(v) } } func main() { //函數名+括號調用函數 say("張三", "666", "雙擊", "ok", "哦耶") //結果:我終于會說話了... }
結果如圖所示
注:參數是...類型的,他的值是一個切片類型。
函數的返回值
返回值是一個的
package main import "fmt" //返回值是一個 func say1() string { return "ok" }
返回值是多個的,需要用括號括起來
//返回值是多個的,需要用括號括起來 func say2() (int, string) { return 1, "ok" }
返回值是命名的
//返回值是命名的,不管是多個返回值還是一個返回值,都需要括號 //如果是命名返回值,需要在邏輯代碼中,將變量賦值 func say3() (a int, b string) { //邏輯代碼 a = 18 b = "666" /* 直接return即可,不需要retrun a,b return的默認就是 a 和 b 不用跟上述返回一樣,返回具體值 */ return }
main函數
func main() { s := say1() fmt.Println(s) a1, b1 := say2() fmt.Println(a1, b1) a2, b2 := say3() fmt.Println(a2, b2) }
結果
到此,相信大家對“Go語言基礎函數有什么作用”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。