GO語言結構體函式建立物件的區別

2021-10-10 19:43:22 字數 1092 閱讀 7485

首先,宣告乙個結構體,如果要將乙個函式作為乙個結構體的方法,則應該在方法名之前,建立乙個結構體的例項

例如

type student struct

func

(student student)

rename()

func

(student *student)

rename()

結構體可以有兩種宣告方式,區別在結構體之前有沒有*號,這也會導致一些程式執行之後的結果不相同

觀察沒有的時候,執行時的結果

首先沒有符號的,應該是建立的結構體,使用結構的時候,將結構體所建立的物件值進行複製,在函式中使用和更改的值也是物件的值所複製的內容。不會更改結構體的字段值

由執行之後的結果,可知,呼叫stu.rename()函式,並沒有改變物件name值

此時,我們觀察到,通過呼叫stu.rename()函式,更改了name字段值。

通過在函式名之前的帶*號,是將結構體的例項通過位址進行傳遞,但是如果沒有符號,只是作為引數進行傳參並使用,在函式中所更改的值,也是經過複製的值。並沒有更改原物件的值。

go語言結構體

go語言陣列可以儲存同一型別的資料 但在結構體中我們可以為不同項定義不同的資料型別 結構體是由一系列具有相同的型別或者不同型別的資料構成的資料集合 1.定義結構體 結構體定義需要使用type和struct語句。struct語句定義乙個新的資料型別,結構體中有乙個或者多個成員。type語句設定了結構體...

GO語言結構體

go語言的struct和c語言的很相似 簡單的struct定義 package main import fmt type test struct func main fmt.println a 或者 package main import fmt type test struct func main...

Go語言 結構體

一 定義結構體及其三種初始化 示例程式 package main import fmt type books struct func main 也可以使用key value 格式 fmt.println books 忽略的字段為0或空 fmt.println books 執行結果 二 訪問結構體及將...