go語言學習筆記 一 和 的區別

2021-08-18 19:41:31 字數 966 閱讀 4930

& 是取位址符號 , 即取得某個變數的位址 , 如 ; &a

*是指標運算子 , 可以表示乙個變數是指標型別 , 也可以表示乙個指標變數所指向的儲存單元 , 也就是這個位址所儲存的值 .

//先構建乙個person型別 : 

package main

import

"fmt"

type person struct

func (r *person) hello() string

func main())

var r = &person

fmt.println(r)

fmt.println(*r)

fmt.println(&r)

var r2 *person = &person

fmt.println(r2)

}

&是取位址符號, 取到person型別物件的位址

*可以表示乙個變數是指標型別(r是乙個指標變數):

3.*也可以表示指標型別變數所指向的儲存單元 ,也就是這個位址所指向的值

4.檢視這個指標變數的位址 , 基本資料型別直接列印位址

經常會見到: p . *p , &p 三個符號

p是乙個指標變數的名字,表示此指標變數指向的記憶體位址,如果使用%p來輸出的話,它將是乙個16進製制數。而*p表示此指標指向的記憶體位址中存放的內容,一般是乙個和指標型別一致的變數或者常量。

而我們知道,&是取位址運算子,&p就是取指標p的位址。等會,怎麼又來了個位址,它到底和p有什麼區別?區別在於,指標p同時也是個變數,既然是變數,編譯器肯定要為其分配記憶體位址,就像程式中定義了乙個int型的變數i,編譯器要為其分配一塊記憶體空間一樣。而&p就表示編譯器為變數p分配的記憶體位址,而因為p是乙個指標變數,這種特殊的身份注定了它要指向另外乙個記憶體位址,程式設計師按照程式的需要讓它指向乙個記憶體位址,這個它指向的記憶體位址就用p表示。而且,p指向的位址中的內容就用*p表示。

go語言學習筆記一

package main 引入fmt庫 import fmt math math cmplx func variablezerovalue func main 定義初值 func variableinitialvalue 可以不定義型別 如果定義了型別就必須遵守 func variabletyped...

Go語言學習筆記一

go 是乙個開源的程式語言,它能讓構造簡單 可靠且高效的軟體變得容易。go是從2007年末由robert griesemer,rob pike,ken thompson主持開發,後來還加入了ian lance taylor,russ cox等人,並最終於2009年11月開源,在2012年早些時候發布...

GO語言學習筆記(一)

1.陣列切片slice 可動態增長的陣列 2.錯誤處理流程關鍵字 defer panic recover 3.變數的初始化 以下效果一樣 var a int 10 var a 10 a 10 推薦寫法 注意 左側的變數不能是被宣告過的4.定義常量 const關鍵字定義常量 5.以大寫字母開頭的常量在...