Go語言struct型別介紹

2022-09-24 23:39:07 字數 2905 閱讀 4222

struct

我們可以宣告新的型別,作為其它型別的屬性或字段容器。

如,建立乙個自定義型別person代表乙個人的實體。這個實體擁有屬性:姓名&年齡。這樣的型別我們稱之為struct。

複製** **如下:

type person struct

複製** **如下:

var p person // p 現在就是 person 型別的變數了

p.name = "astaxie" //  賦值 "astaxie" 給 p 的 name 屬性 .

p.age = 25 //  賦值 "25" 給變數 p 的 age 屬性

fmt.printf("the person's name is %s", p.name) //  訪問 p 的 name 屬性 .

除了上面這種p的宣告使用之外,還有其他兩種宣告使用程式設計客棧方式

1、按照順序提供初始化值

複製** **如下:

p := person

2、通過field:value的方式初始化,這樣可以任意順序

複製** **如下:

p := person

舉例:複製** **如下:

package main

import "fmt"

//宣告乙個新的型別

type person struct

//比較兩個人的年齡,返回年齡大的那個人,並且返回年齡差

//struct 也是傳值的

func older(p1, p2 person) (person, int)

return p2, p2.**g - p1.**g

}func main()

//按照struct定義順序初始化

paul := person

tb_older, tb_diff := older(tom, bob)

tp_older, tp_diff := older(tom, paul)

bp_older, bp_diff := older(bob, paul)

fmt.printf("of %s and %s, %s is older by %d years\n",

tom.name, bob.name, tb_older.name, tb_diff)

fmt.printf("of %s and %s, %s is older by %d years\n",

tom.name, paul.name, tp_older.name, tp_diff)

fmt.printf("of %s and %s, %s is older by %d years\n",

bob.name, paul.name, bp_older.name, bp_diff)

}輸出結果如下:

複製** **如下:

of tom and bob, bob is older by 7 years

of tom and paul, paul is older by 25 years

of bob and paul, paul is older by 18 years

struct的匿名字段

我們上面介紹了如何定義乙個struct,定義的時候是欄位名與其型別一一對應,實際上go支援只提供型別,而不寫欄位名的方式,也就是匿名字段,也稱為嵌入字段。

當匿名欄位是乙個struct的時候,那麼這個struct所擁有的全部欄位都被隱式地引入了當前定義的這個struct:

複製** **如下:

// struct2.go

package main

import (

"fmt"

)type human struct

type student struct

func main() , "computer science"}

//訪問相應的字段

fmt.println("his name is ", mark.name)

fmt.println("his age is ", mark.age)

fmt.println("his weight is ", mark.weight)

fmt.println("his speciality is ", mark.speciality)

//修改對應的資訊

mark.speciality = "ai"

fmt.println("mark changed his speciality")

fmt.println("his speciality is ", mark.speciality)

/www.cppcns.com/  修改他的年齡資訊

fmt.println("mark become old")

mark.age = 46

fmt.println("his age is", mark.age)

//  修改他的體重資訊

fmt.println("mark is not an athlet anymore")

mark.weight += 60

fmt.println("his weight is", mark.weight)

}輸出結果:

複製** **如下:

his name is  mark

his age is  25

his weight程式設計客棧 is  100

his speciality is  computer science

mark changed his speciality

his speciality is  ai

mark become old

his age is 46

mark is not an athlet anymore

his weight is 160

本文標題: go語言struct型別介紹

本文位址:

Go語言struct型別詳解

struct go語言中,也和c或者其他語言一樣,我們可以宣告新的型別,作為其它型別的屬性或字段的容器。例如,我們可以建立乙個自定義型別person代表乙個人的實體。這個實體擁有屬性 姓名和年齡。這樣的型別我們稱之struct。如下 所示 複製 如下 type person struct 看到了嗎?...

Go語言介紹

2 go安裝 2.2 解壓 3 hello world 4 執行方法 go是一門編譯型語言,go語言的工具鏈將源 及其依賴轉換成計算機的機器指令 譯註 靜態編譯 go 是乙個開源的程式語言,它能讓構造簡單 可靠且高效的軟體變得容易。go 語言被設計成一門應用於搭載 web 伺服器,儲存集群或類似用途...

Go語言介紹

go語言是谷歌2009發布的第二款開源程式語言。go語言專門針對多處理器系統應用程式的程式設計進行了優化,使用go編譯的程式可以媲美c或c 的速度,而且更加安全 支援並行程序。1 可直接編譯成機器碼,不依賴其他庫,glibc的版本有一定要求,部署就是扔乙個檔案上去就完成了。2 靜態型別語言,但是有動...