**示例
package testimport (
"fmt""
testing")
type testint func(
int) bool
func isodd(integer
int) bool
return
true
}func iseven(integer
int) bool
return
false
}func filter(slice
int, f testint) int
}return
result
}func test_func(t *testing.t)
fmt.println(
"slice =
", slice)
odd :=filter(slice, isodd)
fmt.println(
"odd elements of slice are:
", odd)
even :=filter(slice, iseven)
fmt.println(
"even elements of slice are:
", even)
}
輸出結果:
slice = [123457]
odd elements of slice are: [13
57]even elements of slice are: [
24]
函式當做值和型別在我們寫一些通用介面的時候非常有用,通過上面例子我們看到testint
這個型別是乙個函式型別,然後兩個filter
函式的引數和返回值與testint
型別是一樣的,但是我們可以實現很多種的邏輯,這樣使得我們的程式變得非常的靈活。
Golang 中函式作為值與型別
在 go 語言中,我們可以把函式作為一種變數,用 type 去定義它,那麼這個函式型別就可以作為值傳遞,甚至可以實現方法,這一特性是在太靈活了,有時候我們甚至可以利用這一特性進行型別轉換。作為值傳遞的條件是型別具有相同的引數以及相同的返回值。go 語言的型別轉換基本格式如下 type name ex...
Golang 中函式作為值與型別
在 go 語言中,我們可以把函式作為一種變數,用 type 去定義它,那麼這個函式型別就可以作為值傳遞,甚至可以實現方法,這一特性是在太靈活了,有時候我們甚至可以利用這一特性進行型別轉換。作為值傳遞的條件是型別具有相同的引數以及相同的返回值。go 語言的型別轉換基本格式如下 type name ex...
golang 值型別和引用型別
1.值型別和引用型別 package main import fmt func add num int func addarry arry 3 int func addslice slice int func addmap m map int int func main 值型別 fmt.printl...