golang 結構體的使用

2021-10-01 21:55:21 字數 1477 閱讀 5072

package main

import (

"fmt""

unsafe")

type person

struct

type student

struct

func test(man person)

func main()

fmt.println(

"man:

", man)

//2. 部分初始化

man2 := person

fmt.println(

"man2:

", man2)

//索引成員變數 「.」

fmt.printf("

man2.name = %q\n

", man2.name)

varman3 person

man3.name = "

mike

"man3.*** = 'm'

man3.age = 99

fmt.println(

"man3:

", man3)

man3.age = 1073

fmt.println(

"man3:

", man3)

//結構體比較

var p1 person = person

var p2 person = person

var p3 person = person

fmt.println(

"p1 == p2 ?

", p1 ==p2)

fmt.println(

"p1 == p3 ?

", p1 ==p3)

//相同型別結構體賦值

vartmp person

fmt.println(

"tmp

", tmp)

tmp =p3

fmt.println(

"tmp

", tmp)

//函式內部使用結構體傳參

vartemp person

fmt.println(

"main temp size:

", unsafe

.sizeof(temp))

test(temp)

//值傳遞。將實參的值拷貝乙份給形參。

fmt.println("

temp

", temp)

fmt.printf(

"&tmp = %p\n

", &temp)

fmt.printf(

"&temp.name = %p\n

", &(temp.name))

fmt.println(

"main temp size:

", unsafe.sizeof(true)) //

1 /0

}

golang結構體tag的使用

tag是結構體的元資訊,可以在執行的時候通過反射機制讀取出來 1 tag定義格式 tag在結構體字段的後方定義,由一對反引號包裹起來,不同的鍵值對之間使用空格分隔 key1 value1 key2 value2 2 指定欄位名 序列化與反序列化預設情況下使用結構體的欄位名,我們可以通過給結構體欄位新...

golang結構體tag的使用

tag是結構體的元資訊,可以在執行的時候通過反射機制讀取出來 1 tag定義格式 tag在結構體字段的後方定義,由一對反引號包裹起來,不同的鍵值對之間使用空格分隔 key1 value1 key2 value2 2 指定欄位名 序列化與反序列化預設情況下使用結構體的欄位名,我們可以通過給結構體欄位新...

Golang結構體知識

在看docker原始碼時,碰到了這個語句 container.lock 看到上面直接對struct container進行上鎖時,我翻了一下這個結構體,發現沒有定義任何鎖啊,怎麼上鎖的咧。於是我就翻了一下這個結構 體的一些子屬性,發現了state的定義 container container.go ...