golang結構體與方法

2021-10-19 07:37:31 字數 1293 閱讀 7132

type people inte***ce

type student struct

func

(stu *student)

speak

(think string

)(talk string

)else

return

}func

main()

think :=

"speak"

fmt.

println

(peo.

speak

(think)

)}

上面的**會有語法異常「cannot use student literal (type student) as type people in assignment:

student does not implement people (speak method has pointer receiver」

如果要編譯通過,有兩種方式修改`

type people inte***ce

type student struct

func

(stu student)

speak

(think string

)(talk string

)else

return

}func

main()

think :=

"speak"

fmt.

println

(peo.

speak

(think)

)}

或者

type people inte***ce

type student struct

func

(stu *student)

speak

(think string

)(talk string

)else

return

}func

main()

think :=

"speak"

fmt.

println

(peo.

speak

(think)

)}

由此可以得出乙個結論,在inte***ce的視角中,指標與結構體是區分開來的;介面中指定的方法如果由結構體繫結;那麼結構體的指標或者結構體都可以與介面繫結,如果介面中指定的方法被結構體的指標繫結,那麼介面只能與該型別的指標繫結

Golang基礎 結構體 方法

type 結構體名稱 structtype people structvar peo people fmt.print peo 輸出 fmt.printf p peo 會列印記憶體位址值var peo people 按照結構體中屬性的順序進行賦值,可以省略屬性名稱 peo people fmt.pr...

golang 結構體與指標

1.結構體 結構體是一系列具有指定資料型別的資料型別 就是乙個結構體中儲存多個不同型別的資料字段 用於建立傳遞複雜資料結構 結構體可以理解為物件導向的模板 但是go並非物件導向 結構體只是一種新的資料型別 2.結構體建立 結構體例項的資料字段不賦值 預設就是該型別的零值 巢狀結構體可以完成更為複雜的...

golang 為結構體新增方法

本節中,將會使用揹包作為 物件 將物品放入揹包的過程作為 方法 通過面向過程的方式和go語言中結構體的方式來理解 方法 的概念。面向過程沒有 方法 概念,只能通過結構體和函式,由使用者使用函式引數和呼叫方式來形成接近 方法 的概念,如下 package main type bag struct fu...