這裡要說一下是go函式和一些其他語言不一樣的地方
1
2
3
4
5
6
func getmsg(i
int
) (r
string
)
func說明這個是個函式
getmsg是函式名
(i int) 函式接收乙個int引數
(r string) 函式返回乙個string型別返回值
這點和c,php都不一樣,和lua是一樣的
1
2
3
4
5
6
7
func getmsg(i
int
) (r
string
, err
string
)
defer的意思是"在函式退出時呼叫",特別用於對檔案進行讀寫操作的時候,需要在open之後要呼叫close操作,將close操作使用defer
func readfile(filepath
string
)()
else
}
這樣寫的意思是在file.open後不立即呼叫close,當return false的時候呼叫file.close().這樣就有效避免了c語言中的記憶體洩露問題。
推薦看這篇部落格:
defer的作用上一節說得很清楚了。
panic和recover我們就將他們看成是其他語言中的throw和catch
下面這個例子:
package main
import
"fmt"
func main()
func f()
}()
fmt.println(
"calling g."
)
g(0)
fmt.println(
"returned normally from g."
)
}
func g(i
int
)
defer fmt.println(
"defer in g"
, i)
fmt.println(
"printing in g"
, i)
g(i + 1)
}
返回了:
1
2
3
4
5
6
7
8
9
10
11
12
calling g.
printing
in
g 0
printing
in
g 1
printing
in
g 2
printing
in
g 3
panicking!
defer
in
g 3
defer
in
g 2
defer
in
g 1
defer
in
g 0
recovered
in
f 4
returned normally
from
f.
panic丟擲了資訊,並且跳出函式。recover接受到了資訊,並且繼續處理。
這個例子理解了基本就掌握了recover和panic
Go語言函式學習教程
這裡要說一下是go函式和一些其他語言不一樣的地方 1 函式格式不同 複製 如下 func getmsg i int r string func說明這個是個函式 getmsg是函式名 i int 函式接收乙個int引數 r string 函式返回乙個string型別返回值 2 函式可以返回多個返回值 ...
Go函式學習
1 package main23 import 4 fmt 5 reflect 6 runtime 7 math 8 910 函式11 函式可以返回兩個值。返回多個值時可以起名字 12 返回值型別寫在最後面 13 函式可以作為引數 14 沒有預設引數,可選引數 1516 func eval a,b ...
go基礎學習(6 函式學習
函式正常寫法 簡寫命名返回值 go函式輸入可變引數 函式返回多個值 package main import fmt 函式正常寫法 func sum0 a int b int int 簡寫 func sum1 a,b int int 命名返回值 func sum2 a,b int res int go...