十一 結構體(基礎)

2021-10-04 01:21:10 字數 2945 閱讀 7729

package main

import

"fmt"

type counter int

type users map

[string

]string

type callback func

(...

string

)//後面可以跟任意型別

func

main()

}list

("a"

,"b"

,"c"

)}

結構體定義使用 struct 標識,需要指定其包含的屬性(名和型別),在定義結構體時可以為 結構體指定結構體名(命名結構體),用於後續宣告結構體變數使用

package main

import

("fmt"

"time"

)//結構體的零值並不是nil 而是所有子元素的零值 組成的

type users struct

func

main()

fmt.

printf

("%#v\n"

, user2)

//零值初始化

var user3 users = users

fmt.

printf

("%#v\n"

, user3)

//用指定屬性名 賦值 可以省略一部分值也可以 更換賦值順序

//如果使用這種方法定義切記最後乙個也需要加逗號 不然會報錯

var user4 users = users

fmt.

printf

("%#v\n"

, user4)

//定義乙個結構體的指標型別 定義不初始化 是nil

var pointer1 *users

fmt.

printf

("%t\n"

, pointer1)

fmt.

printf

("%#v\n"

, pointer1)

//初始化值 定義乙個中間變數獲取它的指標進行賦值

var pointer2 *users =

&user2

fmt.

printf

("%t\n"

, pointer2)

fmt.

printf

("%#v\n"

, pointer2)

//初始化零值 是返回所有元素的零值

var pointer3 *users =

&users

fmt.

printf

("%t\n"

, pointer3)

fmt.

printf

("%#v\n"

, pointer3)

//new建立乙個型別的指標型別

var pointer4 *users =

new(users)

fmt.

printf

("%t\n"

, pointer4)

fmt.

printf

("%#v\n"

, pointer4)

fmt.

println

(pointer4.id)

fmt.

println((

*pointer4)

.id)

//new是獲取乙個指標 map根slice 對映和切片一般用make 引用型別

var aaa *

int=

new(

int)

fmt.

printf

("%t\n"

, aaa)

fmt.

printf

("%#v\n"

, aaa)

}

package main

import

("fmt"

)type user struct

func

main()

fmt.

println

(user.name, user.id, user.tel)

user.tel =

1111111

fmt.

println

(user.name, user.id, user.tel)

user2 :=

&user

fmt.

println

(*user2)

//2種修改方法都可以,直接拿指標. 他背後也是解引用 然後修改

(*user2)

.tel =

12 user2.id =

6 fmt.

println

(*user2)

}

在定義變數時將型別指定為結構體的結構,此時叫匿名結構體。匿名結構體常用於初始化一 

次結構體變數的場景

package main

import

"fmt"

func

main()

fmt.

printf

("%t\n"

, user)

fmt.

printf

("%#v\n"

, user)

user.id =

222 fmt.

printf

("%#v\n"

, user)

user2 :=

struct

//這裡也可以使用命名 ***:x

fmt.

printf

("%#v\n"

, user2)

}

結構體基礎

什麼是結構體?簡單的來說,結構體就是乙個可以包含不同資料型別的乙個結構,它是一種可以自己定義的資料型別,它的特點和陣列主要有兩點不同,首先結構體可以在乙個結構中宣告不同的資料型別,第二相同結構的結構體變數是可以相互賦值的,而陣列是做不到的,因為陣列是單一資料型別的資料集合,它本身不是資料型別 而結構...

結構體 基礎

一 結構是什麼?結構體是一種可以儲存多個資料的集合,像陣列一樣,你可以把多個資料儲存到乙個變數裡,但與陣列不同的是,結構體中的成員 和陣列元素一樣,在結構體中我們稱之為成員 可以是不同型別的。結構體和陣列比較 1 陣列中所有元素的型別相同,但結構體允許不同 2 陣列通過 陣列名 下標 或者指標來訪問...

結構體基礎

結構體,結合程式看好多了。程式直接網上ctlr c來的 還有 和 的區別 include include 結構體 int main student struct student pstruct pstruct student 指向student結構體變數 printf the sudent s in...