go語言學習筆記 結構體

2021-09-25 02:44:17 字數 1523 閱讀 9095

go語言中,結構體的宣告非常類似c語言,具體定義方法如下:

初始化方法有三種:

package main

import

"fmt"

// 定義乙個結構體型別

type student struct

func

main()

fmt.

println

("s1 = "

, s1)

//2.部分成員初始化,未初始化的變數被賦值為0

s2 := student

fmt.

println

("s2 = "

, s2)

//3.結構體指標變數初始化

var p1 *student =

&student

fmt.

println

("*p1 = "

,*p1)

//使用自動推導型別

fmt.

printf

("p1 type is %t\n"

, p1)

}

這裡的比較和賦值類似陣列的比較和賦值,只有同型別才能比較和賦值,比較只能使用==來比較相等或不相等。

package main

import

"fmt"

type student struct

func

main()

s2 := student

s3 := student

fmt.

println

("s1 == s2"

, s1 == s2)

fmt.

println

("s1 == s3"

, s1 == s3)

// 同型別結構體變數可以相互賦值

var tmp student

tmp = s3

fmt.

println

(tmp)

}

這裡對結構體成員的使用類似c語言,使用.運算子操作。

package main

import

"fmt"

type student struct

func

main()

這裡對結構體指標的操作並不是用->,而是繼續使用.操作符,也就是說,假設p1為結構體指標,那麼,p1.name(*p1).name這兩種方式完全等價。

我們還可以使用new函式來定義乙個結構體,new函式返回的是乙個結構體指標。

package main

import

"fmt"

type student struct

func

main()

go語言學習筆記 struct結構體

理解 用來自定義資料結構,把需要的有關聯的字段集合到一起,有點型別map的key value形式,還支援巢狀 宣告乙個結構體並使用 宣告 type stu struct stu1 stu 不需要指定欄位的使用方式 stu2 stu fmt.println stu1,stu2 輸出 忽略欄位名的情況下...

go語言學習筆記六 結構體

1.結構體 自定義的資料型別 值型別package main import fmt 定義乙個cat結構體 type 結構體名稱 struct 結構體名稱和字段首字母大寫可以被其他包使用,小寫為私有 結構體的字段型別為 指標,slice,和map的零值為 nil 即沒有分配空間 例項化使用的時候需要使...

go語言學習12(結構體)

格式 type 結構體名稱 struct 結構體如果需要匯出到其他包用,則名字首字母需要大寫 結構體中成員如果需要在其他包中引用,也需要首字母大寫。例如 type teststruct struct 上面結構體名 teststruct 可以被其他包引用 同理其成員 fieldout 也可以被其他包引...