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)
}
==
來比較相等或不相等。
這裡對結構體成員的使用類似c語言,使用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)
}
.
運算子操作。
這裡對結構體指標的操作並不是用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 也可以被其他包引...