1. 程式人生 > 其它 >golang中自定義一些型別和對應型別的指標方法

golang中自定義一些型別和對應型別的指標方法

package main

import "fmt"

// 專案開發中可以為type宣告的型別編寫一些方法,從而實現物件.方法的操作

// 宣告型別
type myInt int  // int有的功能myInt都有

// 為MyInt型別自定義一個指標方法
// 此處可以使指標,可以是型別 *myInt myInt
// 如果是型別會拷貝一份,如果是指標不拷貝
func (i *myInt) doSomething(a, b int) int {
	return a + b + int(*i)
}

// 結構體也是基於type宣告的型別,所以也可以使用此方式為結構體定義一些方法
type person struct {
	name string
	age int
	blog string
}
// 為person結構體型別自定義一個指標方法
// 注意:此處如果不是指標型別的話,在執行方式時,結構體物件就會被重複拷貝一份
// 如果是指標型別,就不會拷貝,節省記憶體空間
func (p *person) doSomething(a, b int) int {
	return a + b + p.age
}

func main() {
	var a myInt = 11
	ret := a.doSomething(1, 3)
	fmt.Println(ret)

	p := person{"mayanan", 28, "www.mayanan.cn"}
	age := p.doSomething(0, 0)
	fmt.Println(age)

}