GitLab:https://gitlab.com/whitefloor40567/golangnote
在發Interface裡其實應該先說Method的用法的
這樣才會比較好理解Interface該如何使用
另外Method Package裡沒有再區分資料夾
如果用
go run main.go
就會出現
./main.go:4:10: undefined: PersonalData
關於此問題可以參照下列討論,就可以知道為什麼了XD
https://stackoverflow.com/questions/21293000/go-build-works-fine-but-go-run-fails
建議使用的run command
go run .
詳細的main參數請參照GitLab
package main
import "log"
// PersonalData ...
type PersonalData struct {
Name string
Age int
}
//method 宣告
// (struct).func(){}
//如果方法裡的struct沒有用point,將只能讀取struct裡的數值,而不能做修改
//且如果struct裡變數眾多,用point將可以增加程式效率
//所以建議用method時的統一寫法都用point傳入
//也可以進一步統一程式碼風格,增加維護的方便性
// ChangeDataFirst ... no point
func (p PersonalData) ChangeDataFirst(name string, age int) {
log.Println("---Start ChangeDataFirst---")
p.Name = name
p.Age = age
}
// ChangeDataSecond ... Use point
func (p *PersonalData) ChangeDataSecond(name string, age int) {
log.Println("---Start ChangeDataSecond---")
p.Name = name
p.Age = age
}
// PrintData ...
func (p PersonalData) PrintData() {
log.Println("---PrintData---")
log.Println(p.Name)
log.Println(p.Age)
}