Go 學習筆記06 指標 結構體 方法 介面

2021-10-05 03:43:12 字數 2780 閱讀 1133

如果i是變數,通過&i語法來取得i的記憶體位址

如果i是指標,通過*i語法來取得i的值

package main

import

"fmt"

// 乙個函式,接收的是資料型別

// 乙個函式,接收的是資料型別的指標

// 接收到引數後,將引數值重新賦值,在從外面呼叫

// 發現普通的不會改變值,因為在不同的作用域內

// 而傳遞指標的,會改變值,因為操作的是記憶體位址

func

zeroval

(ival int

)func

zeroptr

(iptr *

int)

func

main()

這篇教程不錯

package main

import

"fmt"

// 這裡的 `person` 結構體包含了 `name` 和 `age` 兩個字段。

type person struct

func

main()

)// 你可以在初始化乙個結構體元素時指定欄位名字。

fmt.

println

(person

)// 省略的字段將被初始化為零值。

fmt.

println

(person

)// `&` 字首生成乙個結構體指標。

fmt.

println

(&person

)// 使用點來訪問結構體欄位。

s := person

fmt.

println

(s.name)

// 也可以對結構體指標使用`.` - 指標會被自動解引用。

sp :=

&s fmt.

println

(sp.age)

// 結構體是可變的。

sp.age =

51 fmt.

println

(sp.age)

}

可以把結構體想象成乙個類,這個方法區別於函式,屬於類的函式 叫方法。

package main

import

"fmt"

// 定義結構體

type rect struct

// 定義結構體的方法 面積

// 方法名叫area,返回值為int

// 這個接收的是乙個指標

func

(r *rect)

area()

int// 這個接收的是值,會有資料拷貝,其方法內的操作不會影響外面

func

(r rect)

perim()

intfunc

main()

fmt.

println

("area: "

, r.

area()

) fmt.

println

("perim:"

, r.

perim()

) rp :=

&r fmt.

println

("area: "

, rp.

area()

) fmt.

println

("perim:"

, rp.

perim()

)}

area:  50

perim: 30

area: 50

perim: 30

值型別的變數和指標型別的變數 區別

package main

import

"fmt"

import

"math"

// 這裡是乙個幾何體的基本介面。

// 把幾何體的方法都羅列出來

type geometry inte***ce

// 矩形 結構體

type square struct

// 圓形 結構體

type circle struct

// 定義矩形結構體的方法

func

(s square)

area()

float64

func

(s square)

perim()

float64

// 定義圓形結構體的方法

func

(c circle)

area()

float64

func

(c circle)

perim()

float64

// 將介面當做引數,傳入到measure函式中,型別是geometry,形參是g

// 我們實際傳入的是結構體的例項

// 介面定義了一些方法名,這個例項也實現了對應的方法名

// 在函式中,就可以直接呼叫了

func

measure

(g geometry)

func

main()

c := circle

// 執行函式

measure

(s)measure

(c)}

go學習筆記 2指標

go 語言中指標是很容易學習的,go 語言中使用指標可以更簡單的執行一些任務。接下來讓我們來一步步學習 go 語言指標。我們都知道,變數是一種使用方便的佔位符,用於引用計算機記憶體位址。go 語言的取位址符是 放到乙個變數前使用就會返回相應變數的記憶體位址。執行以上 輸出結果為 現在我們已經了解了什...

Go語言學習筆記九 指標

指標的概念是當時學c語言時了解的。go語言的指標感覺與c語言的沒啥不同。指標變數是儲存記憶體位址的變數。其他變數儲存的是數值,而指標變數儲存的是記憶體位址。這個記憶體位址可能儲存者乙個基本數值。指標變數也是有型別的。它需要知道自己儲存的記憶體位址指向數值的型別,因為不同的數值型別占用的空間大小是不同...

Go 結構體,結構體指標和方法

結構體 講乙個或多個變數組合到一起形成新的型別,這個型別就是結構體,結構體是值型別 定義結構體和賦值 learn go main.go package main import fmt type people struct func main fmt.printf p peo 0x110040f0 賦...