go語言 物件導向之包和封裝 十一

2021-08-21 20:58:20 字數 1215 閱讀 7845

封裝

1. 名字一般使用camelcase

2. 首字母大寫:public

3. 首字母小寫: private 

包1. 為結構定義的方法必須放在同乙個包內

2. 可以是不同檔案

package queues

type quene int

func (q *quene) addquene(val int)

func (q *quene) pop() int

func (q *quene) isenpty() bool

package main

import (

"fmt"

"goheloworld/quence/queues"

)func main()

q.addquene(2)

q.addquene(3)

fmt.println()

if q.isenpty() else

fmt.println()

if q.isenpty() else

}

在go語言中,可以給任意自定義型別(包括內建型別,但不包括指標型別)新增相應的方法

方法總是半丁物件例項,並將例項作為第一實參(receiver),方法的語法如下;

func (receiver recivertype)  funcname(parameters) (results)

1. 引數receiver可以任意命名,如方法中未曾使用,可省略引數名

2. 引數receiver型別可以是t或者*t, 基型別t不能是介面或指標

//point為接受者型別,它本身不能是指標型別

//type point *int

//func (tmp point) add03(other point) point

3. 不支援過載方法,也就是說,不能定義名字相同但是不同引數的方法

//面向過程

func add01(a, b int) int

//物件導向,方法:給某個型別繫結乙個函式

type long int

//tmp叫接收者,接收者就是傳遞的乙個引數

func (tmp long) add02(other long) long

func main()

go物件導向程式設計 封裝

將結構體 屬性的字段設定為小寫 給結構體所在的包提供乙個工廠模式,首字母大寫,類似於乙個建構函式 提供乙個首字母大寫的set方法,用於對屬性的判斷並賦值func c student setscore score float64 提供乙個首字母大寫的get方法,用於獲取屬性值func 封裝的實現 ty...

go語言物件導向

go語言可通過struct宣告新的型別 新建乙個型別person type person struct var p1 person p1.name liming p1.age 18新建乙個型別student,可以通過匿名欄位將person所有欄位隱式引入student type student st...

GO語言物件導向

當初開發go語言的時候就是因為c 的特性太過於繁雜,從而使得很多c 的開發者因為c 的特性而頭疼,go語言成功的精簡了c 的特性,使其很簡潔,很少的特性,卻可以完成很多的事情。go語言中並沒有像c j a語言中這類的class,它只含有像c語言中的結構體,用結構體和指標等特性,完成乙個類的作用,很巧...