GitLab:https://gitlab.com/whitefloor40567/golangnote
在发Interface里其实应该先说Method的用法的
这样才会比较好理解Interface该如何使用
Extra Problem
另外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
https://stackoverflow.com/questions/23695448/how-to-run-all-go-files-within-current-directory-through-the-command-line-mult
建议使用的run command
go run .
Method
详细的main参数请参照GitLab
package mainimport "log"// PersonalData ...type PersonalData struct {Name stringAge int}//method 宣告// (struct).func(){}//如果方法里的struct没有用point,将只能读取struct里的数值,而不能做修改//且如果struct里变数众多,用point将可以增加程式效率//所以建议用method时的统一写法都用point传入//也可以进一步统一程式码风格,增加维护的方便性// ChangeDataFirst ... no pointfunc (p PersonalData) ChangeDataFirst(name string, age int) {log.Println("---Start ChangeDataFirst---")p.Name = namep.Age = age}// ChangeDataSecond ... Use pointfunc (p *PersonalData) ChangeDataSecond(name string, age int) {log.Println("---Start ChangeDataSecond---")p.Name = namep.Age = age}// PrintData ...func (p PersonalData) PrintData() {log.Println("---PrintData---")log.Println(p.Name)log.Println(p.Age)}