封裝
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語言中的結構體,用結構體和指標等特性,完成乙個類的作用,很巧...