go語言基礎 方法 method

方法:規定對象的行爲的。對象的行爲功能。

func (r recver) 方法名(參數列表) (返回值類型){....}
函數:一段獨立的功能,可以被直接調用
func 函數名(參數列表)(返回值類型){....}
函數名(實際參數)
r.方法名(實際參數)

package main

import "fmt"

//1.定義一個結構體
type Person struct {
   name string
   age int
   sex string
}

type Dog struct {
   sort string
   color string
}

// 2.定義一個方法
func (p Person) printInfo(){ // p-->p1
   //可以直接操作Person類的這個對象,就是p
   fmt.Printf("姓名:%s,年齡:%d,性別:%s\n",p.name, p.age,p.sex)
}

func (d Dog)printInfo()  {
   fmt.Printf("品種:%s,毛色:%s\n", d.sort,d.color)
}

func printInfo2(p Person)  {
   fmt.Printf("姓名:%s,年齡:%d,性別:%s\n",p.name, p.age,p.sex)
}



func fun1(a, b int)int{
   return a + b
}

func main()  {
   /*
   方法:method---->類的行爲功能。
      接受者調用--->
      func (接受者) 方法名 (參數列表)(返回值列表){
         //...
      }
   函數:function
      可以直接調用的
      func 函數名(參數列表)(返回值列表){

      }

   方法和函數的區別:
      函數是定義功能,一段代碼
      方法的某個類別的行爲功能

      方法由於接受者不同,方法名可以一直,但是函數不能。go中沒有函數重載
    */

    //1.創建一個對象
    p1 := Person{"王二狗",28,"男"}
    p1.printInfo()

    p2 := Person{"李小花",18,"女"}
    p2.printInfo()

   d1 := Dog{"中華田園犬","土黃色"}
   d1.printInfo()
   d2:=Dog{"哈士奇","灰白色"}
   d2.printInfo()



    printInfo2(p1) // 函數調用
    printInfo2(p2) // 函數調用
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章