1. 程式人生 > >GO語言使用之面向物件程式設計(9)面向物件程式設計應用

GO語言使用之面向物件程式設計(9)面向物件程式設計應用

一、面向物件程式設計的步驟

1、宣告(定義)結構體,確定結構體名
2、編寫結構體的欄位
3、 編寫結構體的方法

二、實現案例:

1) 編寫一個Student結構體,包含name、gender、age、id、score欄位,分別為string、string、int、int、float64型別。
2) 結構體中宣告一個say方法,返回string型別,方法返回資訊中包含所有欄位值。
3) 在main方法中,建立Student結構體例項(變數),並訪問say方法,並將呼叫結果列印輸出。

type person struct{
    Name string
    Age int
} func (p person) showInforn() { fmt.Printf("name=%s age=%d\n",p.Name,p.Age) } func (p person) speak() { fmt.Printf("%s 是一個好人\n",p.Name) } func (p person) jisuan() { sum := 0 for i := 1; i < 101; i++ { sum += i } fmt.Printf("1+~+100的和為%d \n",sum) } func (p person) jisuan2(n int
) (sum int) { for i := 1; i <= n; i++ { sum += i } fmt.Printf("1+~+%d的和為%d \n",n,sum) return } func (p *person) pointDemo() { p.Name="Tom" p.Age=100 } func StructMethodDemo() { p :=person{"張三",18} p.showInforn() p.speak() p.jisuan() res :=p.jisuan2(1000
) fmt.Printf("返回值為 %d \n",res) p1 :=&person{"張三",18} fmt.Println("------------------------") fmt.Printf("指標呼叫前返回值p= %v \n",*p1) p1.pointDemo()//標準呼叫 fmt.Printf("指標呼叫後返回值p= %v \n",*p1) }

相關推薦

GO語言使用面向物件程式設計(9)面向物件程式設計應用

一、面向物件程式設計的步驟 1、宣告(定義)結構體,確定結構體名 2、編寫結構體的欄位 3、 編寫結構體的方法 二、實現案例: 1) 編寫一個Student結構體,包含name、gen

Go語言學習筆記(8)面向物件

package main import "fmt" func main() { //定義treeNode結構體 var root treeNode root = treeNode{value:3} fmt.Println(root) fmt.Println() root.left

go語言併發程式設計 channel

前面介紹了goroutine的用法,如果有多個goroutine的話相互之間是如何傳遞資料和通訊的呢。在C語言或者JAVA中,傳輸的方法包括共享記憶體,管道,訊號。而在Go語言中,有了更方便的方法,就是channel。在同一時刻,僅有一個goroutine能向一個通道傳送元素值,同時也僅有一個goroutin

Go語言嵌入類型

go 類型 嵌入類型,或者嵌套類型,這是一種可以把已有的類型聲明在新的類型裏的一種方式,這種功能對代碼復用非常重要。在其他語言中,有繼承可以做同樣的事情,但是在Go語言中,沒有繼承的概念。Go提倡的代碼復用的方式是組合,所以這也是嵌入類型的意義所在。組合而不是繼承,所以Go才會更靈活。type Rea

Go語言標誌符可見性

goGo的標誌符,這個翻譯覺得怪怪的,不過還是按這個起了標題,可以理解為Go的變量、類型、字段等。這裏的可見性,也就是說那些方法、函數、類型或者變量字段的可見性。比如哪些方法不想讓另外一個包訪問,我們就可以把它們聲明為非公開的;如果需要被另外一個包訪問,就可以聲明為公開的,和Java語言裏的作用域類似。在Go

Go語言Doc 文檔

go doc 對於協作開發或者代碼共享來說,文檔是一個可以幫助開發者快速了解以及使用這些代碼的一個教程,文檔越全面、越詳細,入門越快,效率也會更高。在Go語言中,Go為我們提供了快速生成文檔以及查看文檔的工具,讓我們可以很容易地編寫查看文檔。Go提供了兩種查看文檔的方式:一種是使用go doc命令在終

Go語言並發資源競爭

go 並發 並發本身並不復雜,但是因為有了資源競爭的問題,就使得我們開發出好的並發程序變得復雜起來,因為會引起很多莫名其妙的問題。package main import ( "fmt" "runtime" "sync" ) var ( count int32

Go語言並發示例-Pool(一)

go pool 並發 這篇文章演示使用有緩沖的通道實現一個資源池,這個資源池可以管理在任意多個goroutine之間共享的資源,比如網絡連接、數據庫連接等,我們在數據庫操作的時候,比較常見的就是數據連接池,也可以基於我們實現的資源池來實現。可以看出,資源池也是一種非常流暢性的模式,這種模式一般適用

Go語言log日誌

log go 在我們開發程序後,如果有一些問題需要對程序進行調試的時候,日誌是必不可少的,這是我們分析程序問題常用的手段。 日誌使用 日誌分析,就是根據輸出的日誌信息,分析挖掘可能的問題,我們使用fmt.Println系列函數也可以達到目的,因為它們也可以把我們需要的信息輸出到終端或者其他文件中。不過

go語言指針

ptr數組 Arrays數組是內置(build-in)類型,是一組同類型數據的集合,它是值類型,通過從0開始的下標索引訪問元素值。在初始化後長度是固定的,無法修改其長度。當作為方法的入參傳入時將復制一份數組而不是引用同一指針。數組的長度也是其類型的一部分,通過內置函數len(array)獲取其長度。在開始前先

Go語言調試

調試 go 調試是一種技能,不限於我們說的debug,這只是其中的一種,這是可以打斷點的調試,除此之外,還有打印輸出、日誌記錄、單元測試,這都可以稱之為調試程序的手段。打印輸出打印輸出是一種比較傳統的調試手段,我們可以把我們需要了解的變量值,執行的步驟等打印出來,來證明我們的猜測,以便解決問題。fun

Go語言數據類型總結

go語言 數據 數據類型字符串:字符串是不可變的字節序列,本身就是一個復合結構。頭部指針指向字節數組,但是沒有NULL結尾。默認以UTF-8編碼存儲Unicode字符,字面量裏允許使用十六進制、八進制和UTF-8編碼格式。內置函數len返回字節數組長度,cap不接受字符串類型參數。字符串默認是nil而不是&

Go語言方法詳解

go語言 方法方法是與對象實例綁定的特殊函數。用於維護和展示對象自身的狀態。對象是內斂的。普通函數則專註與算法流程,通過接受參數來完成特定的邏輯運算,並返回最終結果,方法是有關聯狀態的,函數通常是沒有的。方法和函數定義語法區別在於前者實例接受參數,編譯器以此確定方法所屬的類型。在一些語言中盡管沒有定義,但是函

Go語言項目的包結構詳解

go語言 包結構Go語言的工作空間:通常添加到GOPATH中。 src bin pkg對於bin和pkg兩個目錄,主要影響go install/get命令,它們會將編譯結果安裝到這兩個目錄下,以實現增量編譯。環境變量用於實現GOPATH只是工具鏈和標準庫的存放位置。在使用Git等版本控制工具的時候,建議忽略

Go語言常量與運算符

常量 運算符 用例1 //此文件用來練習 //常量與運算符的 package main import "fmt" //定義單個常量 const SPARK_NAME = "spark-test001" const NODE_NUM int = 3 //下面的方式,只是簡寫 const (

Go語言切片Slice練習

切片slice切片Slice理論知識 其本身並不是數組,它指向底層的數組 作為編程數組的替代方案,可以關聯底層數組的局部或者全部 為引用類型 可以直接創建或從底層數組獲取生成 使用len()獲取元素個數,cap()獲取容量 一般使用make()創建 如果多個slice指向相同底層數組,其中一個的值改變會影響

Go語言map練習

mapmap理論基礎知識 類似其他語言中的哈希表或者字典,以key-value形式存儲數據 key必須是支持== 或者 != 比較運算的類型,不可以是函數,map或者slice map查找比線性搜索快很多,但比使用索引訪問數據的類型慢100倍 map使用make()創建,支持:=這種簡寫方式 make(

Go語言method

method方法method Go 中雖沒有class, 但依舊有method 通過顯示說明receiver來實現與某個類型的組合 只能為同一個包中的類型定義方法 receiver可以是類型的值或指針 不存在方法重載 可以使用值或者指針來調用方法,編譯器會自動完成轉換 從某種意義上來說,方法是函數的語法糖,

Go語言interface

interfaceinterface 理論 接口是一個或多個方法簽名的集合 只要某個類型擁有該接口的所有方法簽名,即算實現該接口,無需顯示聲明實現了哪個接口,這稱為Structural Typing 接口只有方法聲明,沒有實現,沒有數據字段 接口可以匿名嵌入其他接口,或嵌入到結構中 將對象賦值給接口時

Go語言正則表達式

GO 正則表達式 [TOC] Go語言正則表達式 方式一:使用Compile package main import ( "fmt" "regexp" ) const text = "my email is [email protected]" func main