package mainimport (
"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 ...