package main
import “fmt”
/*
Golang中的方法作用在制定的數據類型上的(即:和制定的數據類型綁定),因此自定義類型,都可以有方法,而不僅僅是struct,比如int,float32等都可以有方法
*/
type integer int
//編寫一個方法,可以改變i的值
func(i integer)print(){
fmt.Println(“i=”,i)
}
//編寫一個方法,可以改變i的值
func(i *integer)change(){
*i = *i+1
}
type Student struct {
Name string
Age int
}
//給*Student實現方法string()
func(stu *Student)String()string{
str := fmt.Sprintf(“Name=[%v] Age=[%v]”,stu.Name,stu.Age)
return str
}
func main(){
/*
方法注意事項和細節討論
1)結構體類型是值類型,在方法調用中,遵守值類型的傳統機制,是值拷貝傳遞方式
2)如程序員希望在方法中,修改結構體變量的值,可以通過結構體指針的方式來處理。
3)Golang中的方法作用在制定的數據類型上的(即:和制定的數據類型綁定),因此自定義類型,都可以有方法,而不僅僅是struct,比如int,float32等都可以由方法
4)方法的訪問範圍控制的規則,和函數一樣,方法名首字母小寫,只能在本包訪問,方法首字母大寫,可以在本包和其他包訪問
5)如果一個變量實現了String()這個方法,那麽fmt.Println默認會調用這個變量的String()進行輸出
*/
var i integer = 10
i.print()
i.change()
fmt.Println(“i=”,i)
//定義一個Student變量
stu := Student{
Name:"tom",
Age:20,
}
//如果你實現了*Student類型的String方法,就會自動調用
fmt.Println(&stu)
}