golang 函式用例

2021-08-05 19:44:45 字數 1995 閱讀 4074

golang函式是不支援巢狀(但是可以使用匿名函式實現巢狀)、預設引數、過載, 但支援:

以下是一些基本用法示例:

// 一般用法, 無返回值

func

funcname1

(input1 type1)

// 多引數, 乙個返回值

func

funcname2

(input1 type1, input2 type2)

(output1 type1)

// 多引數, 多返回值

func

funcname3

(input1 type1, input2 type2)

(output1 type1, output2 type2)

// 傳入引數同型別

func

funcname4

(i, j int

)int

// 命名返回引數

func

funcname5

(a, b int

)(x, y int

)

1.傳遞可變引數
package main

import

("fmt"

)func

testlistarg

(x int

, args ...

string

) fmt.

printf

("%v %v\n"

, x, str)

}func

main()

testlistarg(5

, a...

)testlistarg(6

, a[:3

]...

)}

演示效果:

root@xiaomo:~/gopro# go build main.go

root@xiaomo:~/gopro# ./main

5 advm

6 adv

2.傳遞指標型別
package main

import

("fmt"

)func

testpointer

(user *user)

func

main()

testpointer

(&user)

}

3.匿名函式與閉包

匿名方法經常和閉包配套使用

package main

import

("fmt"

)// 匿名方法

var f1 =

func

(a,b int

)int

// 匿名方法與閉包

func

f2(name string

) sum :=

f_inner(7

,8) fmt.

printf

("name:%v sum:%v\n"

, name, sum)

// 匿名函式訪問外部方法區域性變數

extra :=

15 f_inner2 :=

func

(x,y int

)int

sum2 :=

f_inner2(9

,10) fmt.

printf

("name:%v sum2:%v\n"

, name, sum2)

}func

main()

演示效果:

root@xiaomo:~/gopro# go build main.go

root@xiaomo:~/gopro# ./main

14name:xiaomo sum:15

name:xiaomo sum2:34

python zip 函式用例

zip 為矩陣的轉置操作,可以輸入任意組的資料。對於二組資料,可以把兩種型別的資料按照出現的順序組合。但是當兩個資料長度不相等的時候,值組合到較短的那個就停止了。zip 返回的是zip型別的資料,不能直接print 可以轉化為dict或者list輸出。示例 將元組 wo shi ran de xn ...

Golang單例模式

單例物件的類必須保證只有乙個例項存在,全域性有唯一介面訪問。懶漢方式 指全域性的單例例項在第一次被使用時構建。餓漢方式 指全域性的單例例項在類裝載時構建。type singleton struct var ins singleton func getins singleton return ins ...

golang單例模式

單例物件的類必須保證只有乙個例項存在,全域性有唯一介面訪問。type singleton struct var ins singleton func getins singleton return ins 缺點 非執行緒安全。當正在建立時,有執行緒來訪問此時ins nil就會再建立,單例類就會有多個...