在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/GO  HTML/ 實(shí)現(xiàn)結(jié)構(gòu)體方法時(shí)候,是否加星號(hào)。

實(shí)現(xiàn)結(jié)構(gòu)體方法時(shí)候,是否加星號(hào)。

package main

import "fmt"

type BookInterFace interface {
    getName() string
}
type Book struct {
    name      string
    author    string
    pageCount int
    date      string
}

/*
教材此處寫的是:
func (b *Book) getName() string {...}
*/
func (b Book) getName() string {
    return b.name
}

func main() {
    book1 := new(Book)
    book1.name = "Java入門"
    fmt.Printf("book1's name: %v \n", book1.getName())
}

運(yùn)行結(jié)果來(lái)看,目前得到的結(jié)果是一樣的,為什么教材上要寫成 *Book?

回答
編輯回答
夢(mèng)一場(chǎng)

官方答案在此

receiver(Book)其實(shí)就是函數(shù)的一個(gè)參數(shù)而已,所以用struct就會(huì)有復(fù)制且不能修改屬性
反過來(lái)看,用pointer,那么book就有被函數(shù)修改的風(fēng)險(xiǎn)

2017年6月28日 07:31