最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Go函數的使用示例教程

 更新時間:2024年07月09日 12:30:37   作者:五敷有你  
這篇文章主要介紹了Go函數的使用示例,本文通過實例代碼給大家介紹的非常詳細,感興趣的朋友跟隨小編一起看看吧

函數返回多個值

用法如下:

package main
import (
	"fmt"
	"strconv"
)
// 返回多個返回值,無參數名
func MultFunc1(a int, b int) (int, string) {
	a = a + 1
	b = b + 1
	//數字轉字符串
	itoa := strconv.Itoa(b)
	return a, itoa
}
// 返回多個返回值,有參數名
func MultFunc2(a int, b int) (r1 int, r2 int) {
	//形參有默認值 是0
	fmt.Println("形參r1: ", r1, "r2: ", r2)
	r1 = a + 1
	r2 = b + 1
	return
}
func MultFunc3(a int, b int) (int, int) {
	a = a + 1
	b = b + 1
	return a, b
}
func main() {
	var a, b = MultFunc1(1, 2)
	fmt.Println("a=", a, "b=", b)
	var c, d = MultFunc2(3, 4)
	fmt.Println("c=", c, "d=", d)
	var e, f = MultFunc3(5, 6)
	fmt.Println("e=", e, "f=", f)
}

形參是有默認值的 0 ""(空串) false 

init函數和import

init函數

init函數可以在package main 中,可在其他package中,可在同一個package中出現多次

main函數

main 函數只能在package main中。

執(zhí)行順序

golang中有兩個保留的函數:init函數(能夠應用于所有的package)和main函數(只能用于package main)。這兩個函數在定義的時候不能有任何的返回值和參數

雖然package里面可以寫任意多個init函數,但這無論是對于可讀性還是以后的可維護性來說都是不方便的,所以建議用戶在一個package中每個文件只寫一個init函數。

程序的初始化和執(zhí)行都始于main包

如果main包還導入了其它的包,那么就會在編譯時將它們依次導入。有時一個包會被多個包同時導入,那么它只會被導入一次(例如很多包可能都會用到fmt包,但它只會被導入一次,因為沒有必要導入多次)。

當一個包被導入時,如果該包還導入了其它的包,那么會先將其它包導入進來,然后再對這些包中的包級常量和變量進行初始化,接著執(zhí)行init函數(如果有的話),依次類推。

等所有被導入的包都加載完畢了,就會開始對main包中的包級常量和變量進行初始化,然后執(zhí)行main包中的init函數(如果存在的話),最后執(zhí)行main函數。下圖詳細地解釋了整個執(zhí)行過程:

測試例子

代碼結構如下

Lib1.go

package lib1
import "fmt"
func init() {
	fmt.Print("我是lib1")
}
func Lib1Test() {
	fmt.Println("lib1Test")
}

Lib2.go

package lib2
import (
	"fmt"
)
func init() {
	fmt.Print("我是Lib2")
}
func Lib2Test() {
	fmt.Println("lib2Test")
}

main.go

注意:如果文中沒有使用,就需要家一個_

package main
 
import (
	"fmt"
	"goProject/aaa/lib1"
	"goProject/aaa/lib2"
)
 
func init() {
	fmt.Print("我是Lib3.go")
}
 
func main() {
	lib1.Lib1Test()
	lib2.Lib2Test()
 
}

注意看打印的結果

輸出的順序與我們上面圖給出的順序是一致的

函數的參數

函數如果使用參數,該變量可稱為函數的形參

形參就像是定義在函數體內的局部變量

調用函數,可以通過兩種方式傳遞參數:

值傳遞

值傳遞是指在調用函數的時候將實際的參數復制一份傳遞到函數中,這樣在函數中如果對參數進行修改,則不會影響到實際的參數。

默認情況下,Go 語言使用的是值傳遞,即在調用過程中不會影響到實際參數。

下面使用一個經典的案例:兩數交換

package main
import "fmt"
// 值傳遞
func Swap1(a int, b int) {
	var temp = a
	a = b
	b = temp
}
// 引用傳遞
func Swap2(a *int, b *int) {
	var temp = *a
	*a = *b
	*b = temp
}
func main() {
	a := 1
	b := 2
	Swap1(a, b)
	fmt.Println("值傳遞 a=", a, "b=", b)
	Swap2(&a, &b)
	fmt.Println("引用傳遞 a=", a, "b=", b)
}

執(zhí)行結果如下:

第一種值傳遞的方式交換失敗,是因為副本拷貝

第一種是引用傳遞,他是傳遞地址,那么引出了指針

引用傳遞(指針)

指針在C++中有用到。引用傳遞是指在調用函數時將實際參數的地址傳遞到函數中,那么在函數中對參數所進行的修改,將影響到實際參數。

詳情,可以去看看C++,我也去看看!

到此這篇關于Go函數的使用的文章就介紹到這了,更多相關Go函數使用內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Go語言的WebAssembly實戰(zhàn)開發(fā)

    Go語言的WebAssembly實戰(zhàn)開發(fā)

    Go語言的WebAssembly支持為Web開發(fā)帶來了新的可能性,本文主要介紹了Go語言與WebAssembly的結合,內容包括編譯方法、JavaScript交互、性能優(yōu)化技巧和實戰(zhàn)案例,感興趣的可以了解一下
    2026-05-05
  • Golang中的select語句及其應用實例

    Golang中的select語句及其應用實例

    本文將介紹Golang中的select語句的使用方法和作用,并通過代碼示例展示其在并發(fā)編程中的實際應用,此外,還提供了一些與select相關的面試題,幫助讀者更好地理解和應用select語句
    2023-12-12
  • Go net/http/pprof分析內存泄露及解決過程

    Go net/http/pprof分析內存泄露及解決過程

    這篇文章主要介紹了Go net/http/pprof分析內存泄露及解決過程,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2025-04-04
  • go mod 使用舊版本 版本號指定方式

    go mod 使用舊版本 版本號指定方式

    這篇文章主要介紹了go mod 使用舊版本 版本號指定方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-05-05
  • Go語言將string解析為time.Time時兩種常見報錯

    Go語言將string解析為time.Time時兩種常見報錯

    本文主要介紹了Go語言將string解析為time.Time時兩種常見報錯,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-03-03
  • GoFrame?ORM原生方法操作示例

    GoFrame?ORM原生方法操作示例

    這篇文章主要為大家介紹了GoFrame?ORM原生方法操作示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-06-06
  • Golang導入包的幾種方式(點,別名與下劃線)

    Golang導入包的幾種方式(點,別名與下劃線)

    這篇文章主要介紹了Golang導入包的幾種方式(點,別名與下劃線),文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • 手把手帶你運行自己的第一個Go程序

    手把手帶你運行自己的第一個Go程序

    Go語言被設計成一門應用于搭載Web服務器,存儲集群或類似用途的巨型中央服務器的系統(tǒng)編程語言,這篇文章主要介紹了如何運行自己的第一個Go程序的相關資料,需要的朋友可以參考下
    2025-07-07
  • golang中json的omitempty使用操作

    golang中json的omitempty使用操作

    這篇文章主要介紹了golang中json的omitempty使用操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-12-12
  • golang 實現時間戳和時間的轉化

    golang 實現時間戳和時間的轉化

    這篇文章主要介紹了golang 實現時間戳和時間的轉化操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-05-05

最新評論

卫辉市| 临海市| 马龙县| 新津县| 德庆县| 宜宾县| 阿城市| 天津市| 淳化县| 张家港市| 北川| 观塘区| 自治县| 夏河县| 景东| 达拉特旗| 锦州市| 中宁县| 易门县| 惠东县| 上虞市| 班戈县| 通城县| 新沂市| 深泽县| 巴林左旗| 安岳县| 大埔区| 济宁市| 星子县| 托里县| 扶绥县| 阜康市| 鹿泉市| 安阳县| 肇庆市| 邵东县| 长子县| 汤原县| 临沭县| 新龙县|