go関数をタイプとして-go言語
1541 ワード
Go言語では中国では関数を一種のタイプとしてtypeで定義することができる.この特性を利用して,タイプ変換を行うことができる.関数パラメータのタイプとして使用して、パラメータを拘束できます.
関数のタイプ変換
タイプ変換の基本フォーマットは次のとおりです.
type_name(expression)
以上のように、Calculate Type関数のタイプを宣言し、Serve()メソッドを実装し、同じパラメータを持つaddとmulを強制的に変換します.
関数をパラメータとして使用するタイプ
Net/httpパケットソースコード例
関数のタイプ変換
タイプ変換の基本フォーマットは次のとおりです.
type_name(expression)
package main
import "fmt"
//
type CalculateType func(int , int )
//
func (c *CalculateType) Server() {
fmt.Println(" ")
}
//
func add(a, b int) {
fmt.Println( a + b)
}
//
func mul(a, b int){
fmt.Println( a * b)
}
func main() {
// add CalculateType
a := CalculateType(add)
// mul CalculateType
b := CalculateType(mul)
a(2, 3)
b(2, 3)
a.Server()
b.Server()
}
//5
//6
//
//
// , Calculate Type , Serve() , add mul
以上のように、Calculate Type関数のタイプを宣言し、Serve()メソッドを実装し、同じパラメータを持つaddとmulを強制的に変換します.
関数をパラメータとして使用するタイプ
package main
import "fmt"
//
type CalculateType func(int , int )
//
func add(a, b int) {
fmt.Println( a + b)
}
//
func mul(a, b int){
fmt.Println( a * b)
}
func Calculate(a, b int, f CalculateType) {
f(a, b)
}
func main() {
a, b := 2,3
Calculate(a, b, add)
Calculate(a, b, mul)
}
//5
//6
// ,Calculate f CalculateType , add mul CalculateType ,
// add mul Calculate
,Calculate f CalculateType , add mul CalculateType ,
add mul Calculate
Net/httpパケットソースコード例