golang有類(lèi)(class)嗎?
golang沒(méi)有類(lèi)(class)。
golang中并沒(méi)有明確的面向?qū)ο蟮恼f(shuō)法,不能算是一種面向?qū)ο蟮恼Z(yǔ)言。因?yàn)椋?/p>
-
golang只支持封裝,不支持繼承和多態(tài)
-
golang只有struct,沒(méi)有class
實(shí)在要扯上的話,可以將struct比作其它語(yǔ)言中的class。
類(lèi)聲明
type Poem struct { Title string Author string intro string }
這樣就聲明了一個(gè)類(lèi),其中沒(méi)有public、protected、private的的聲明。
golang用另外一種做法來(lái)實(shí)現(xiàn)屬性的訪問(wèn)權(quán)限:屬性的開(kāi)頭字母是大寫(xiě)的則在其它包中可以被訪問(wèn),否則只能在本包中訪問(wèn)。類(lèi)的聲明和方法亦是如此。
類(lèi)方法聲明
func (poem *Poem) publish() { fmt.Println("poem publish") }
或者
func (poem Poem) publish() { fmt.Println("poem publish") }
和其它語(yǔ)言不一樣,golang聲明方法和普通方法一致,只是在func后增加了poem Poem這樣的聲明。加和沒(méi)有加*的區(qū)別在于一個(gè)是傳遞指針對(duì)象,一個(gè)是傳遞值對(duì)象。