所以先列出修改後的代碼,修改的要點是把“*NewPerson1()。speak()" to " var b = new person 1();(& ampb)。Speak()”,同時更改“NewPerson2()。speak()" to " var a = new person 2();(& ampa)。Speak()",代碼如下:
包主;
導入“fmt”;
類型角色結構{
名稱字符串
}
func (p *PersonA) Speak () {
fmt。Println ( "person speak ",p.name)
}
func (p PersonA) Walk ( ){
fmt。Println("人走",p.name)}
func new person 1()(p PersonA){
返回角色{ "新成員1"}}
func NewPerson2()(p PersonA){
返回角色{ "新人物2"}}
func main () {
var a = new person 2();(& ampa)。speak();?
答。walk();
fmt。Println (" -")?;
var b = new person 1();(& ampb)。speak();
b.Walk ()}
Go代碼調試效果
關於指針變量的使用,go語言和其他有指針的編程語言是壹樣的,比如C語言。只有返回值是地址/指針,不存在賦值前對返回值進行尋址這樣的操作。類似的錯誤後面會整理出來。
不同的是go語言更簡單,go語言函數可以使用結構或者結構的指針來傳遞結構參數。而且與C語言不同,go語言沒有區分結構指針和結構訪問成員的運算符,go語言只有“.”對於這兩種情況,但是沒有"-> " C語言專門為結構指針準備的。接線員。
可以使用結構指針作為結構的方法的參數來引用自身嗎?