(熱)愛是力量之泉!!
//case 1
package main
import (
"fmt"
"math"
)type pos struct
func (temp pos) abs() float64
func sum(temp pos) float64
func main()
fmt.println(sum(v))
}
//case 2
package main
import (
"fmt"
"math"
)type myfloat float64
func (f myfloat) abs() float64
return float64(f)
}func main()
//case 3
package main
import (
"fmt"
"math"
)type vertex struct
func (v vertex) abs() float64
func (v *vertex) scale(f float64)
func (v vertex) justscalewhile(f float64)
func main()
v.justscalewhile(10)
fmt.println(v.abs())
v.scale(10)
fmt.println(v.abs())
}
以值為接收者的方法被呼叫時,接收者既能為值又能為指標,見case5
//case 4
var v vertex
v.scale(5) // ok
p := &v
p.scale(10) // ok
//case5
var v vertex
fmt.println(v.abs()) // ok
p := &v
fmt.println(p.abs()) // ok
型別通過實現乙個介面的所有方法來實現該介面
介面值可以作為函式的引數或返回值
介面內的具體值為nil,方法依然會被nil接收者呼叫
//case 5
package main
import (
"fmt"
)type getinfo inte***ce
type myint int
func (x myint) gettypeinfo() string
func (x myint) m()
type myintstruct struct
func (x *myintstruct) gettypeinfo() string
func (x *myintstruct) m()
fmt.println(x.element)
}func describe(t getinfo)
func main()
//case 6
package main
import "fmt"
func main()
describe(i)
i = 42
describe(i)
i = "hello"
describe(i)
}func describe(i inte***ce{})
GO語言學習筆記(九 方法 method)
方法method go中雖沒有class,但依舊有method 通過顯示說明receiver來實現某個型別的組合 只能為同乙個包中的型別定義方法 receiver可以是型別的值或者指標 不存在方法過載 可以使用值或者指標來呼叫方法,編譯器自動完成轉換 從某種意義上說,方法是函式的語法糖,因為rece...
Go語言學習筆記(六)方法和接收器
c 是一種物件導向的程式語言,我們可以為類提供成員變數和成員方法。而在go中沒有類的概念,但是也提供了類似的機制來表示,那就是方法。go語言中的方法 method 是一種作用於特定型別變數的函式。這種特定型別變數叫做接收器 receiver 如果將特定型別理解為結構體或類,那接收器的概念就類似於其他...
Go語言學習筆記 PART6 Map
func main 2 func int 5 func int fmt.println mf 2.int作為key,int切片作為value mp1 make map int int mp2 make map int int 複製 宣告方式 var map1 map int string 初始化方式...