Go語言學習Part4 1 方法和介面

2021-10-07 14:20:48 字數 1882 閱讀 2992

(熱)愛是力量之泉!!

//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 初始化方式...