婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁(yè) > 知識(shí)庫(kù) > Go語(yǔ)言struct類型介紹

Go語(yǔ)言struct類型介紹

熱門標(biāo)簽:外呼系統(tǒng)多少錢一年 滁州自建外呼系統(tǒng) 工商信用卡外呼系統(tǒng)教程 客服級(jí)電銷機(jī)器人 外呼系統(tǒng)如何接收服務(wù)密碼 智能營(yíng)銷軟件 旅游廁所如何電子地圖標(biāo)注 經(jīng)常接到推銷電話機(jī)器人的電話 海外照相館地圖標(biāo)注入駐

struct

我們可以聲明新的類型,作為其它類型的屬性或字段容器。
如,創(chuàng)建一個(gè)自定義類型person代表一個(gè)人的實(shí)體。這個(gè)實(shí)體擁有屬性:姓名年齡。這樣的類型我們稱之為struct。

復(fù)制代碼 代碼如下:

type person struct{
        name string
        age int
}

復(fù)制代碼 代碼如下:

var P person // P 現(xiàn)在就是 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、按照順序提供初始化值

復(fù)制代碼 代碼如下:

P := person{"Liuxinming", 28}

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

復(fù)制代碼 代碼如下:

P := person{age:28, name:"Liuxinming"}

舉例:

復(fù)制代碼 代碼如下:

package main

import "fmt"

//聲明一個(gè)新的類型
type person struct {
 name string
 avg  int
}

//比較兩個(gè)人的年齡,返回年齡大的那個(gè)人,并且返回年齡差
//struct 也是傳值的
func older(p1, p2 person) (person, int) {
 if p1.avg > p2.avg { //比較p1和p2年齡
  return p1, p1.avg - p2.avg
 }
 return p2, p2.avg - p1.avg
}

func main() {
 var tom person
 //賦值初始化
 tom.name, tom.avg = "Tom", 18

 //兩個(gè)字段都寫清楚的初始化
 bob := person{avg: 25, name: "Bob"}

 //按照struct定義順序初始化
 paul := person{"Paul", 43}

 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)
}

輸出結(jié)果如下:

復(fù)制代碼 代碼如下:

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的匿名字段

我們上面介紹了如何定義一個(gè)struct,定義的時(shí)候是字段名與其類型一一對(duì)應(yīng),實(shí)際上Go支持只提供類型,而不寫字段名的方式,也就是匿名字段,也稱為嵌入字段。

當(dāng)匿名字段是一個(gè)struct的時(shí)候,那么這個(gè)struct所擁有的全部字段都被隱式地引入了當(dāng)前定義的這個(gè)struct:

復(fù)制代碼 代碼如下:

// struct2.go
package main

import (
 "fmt"
)

type Human struct {
 name   string
 age    int
 weight int
}
type Student struct {
 Human      //匿名字段,那么默認(rèn)struct就包含了Human所有字段
 speciality string
}

func main() {
 //初始化一個(gè)學(xué)生
 mark := Student{Human{"Mark", 25, 100}, "Computer Science"}

 //訪問相應(yīng)的字段
 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)

 //修改對(duì)應(yīng)的信息
 mark.speciality = "AI"
 fmt.Println("Mark changed his speciality")
 fmt.Println("His speciality is ", mark.speciality)
 //  修改他的年齡信息
 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)
}

輸出結(jié)果:

復(fù)制代碼 代碼如下:

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語(yǔ)言中struct的匿名屬性特征實(shí)例分析
  • Go語(yǔ)言struct類型詳解
  • 解析Go語(yǔ)言編程中的struct結(jié)構(gòu)

標(biāo)簽:湘潭 九江 深圳 喀什 運(yùn)城 楚雄 本溪 晉城

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Go語(yǔ)言struct類型介紹》,本文關(guān)鍵詞  語(yǔ)言,struct,類型,介紹,語(yǔ)言,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《Go語(yǔ)言struct類型介紹》相關(guān)的同類信息!
  • 本頁(yè)收集關(guān)于Go語(yǔ)言struct類型介紹的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    主站蜘蛛池模板: 康保县| 衡南县| 咸宁市| 灵璧县| 防城港市| 宁都县| 永泰县| 无极县| 云阳县| 无极县| 石楼县| 若羌县| 无棣县| 海丰县| 平陆县| 襄汾县| 新安县| 揭阳市| 大同市| 乡城县| 名山县| 大丰市| 滕州市| 筠连县| 饶阳县| 瓦房店市| 永善县| 东至县| 青田县| 五常市| 新源县| 宁城县| 山东| 门源| 五华县| 格尔木市| 茌平县| 夹江县| 依兰县| 斗六市| 清河县|