最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Go語言struct類型介紹

 更新時間:2015年01月09日 09:29:15   投稿:junjie  
這篇文章主要介紹了Go語言struct類型介紹,本文講解了struct的2種聲明方式,struct的匿名字段等內(nèi)容,需要的朋友可以參考下

struct

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

復制代碼 代碼如下:

type person struct{
        name string
        age int
}

復制代碼 代碼如下:

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、按照順序提供初始化值

復制代碼 代碼如下:

P := person{"Liuxinming", 28}

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

復制代碼 代碼如下:

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

舉例:

復制代碼 代碼如下:

package main

import "fmt"

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

//比較兩個人的年齡,返回年齡大的那個人,并且返回年齡差
//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

 //兩個字段都寫清楚的初始化
 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é)果如下:

復制代碼 代碼如下:

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 {
 name   string
 age    int
 weight int
}
type Student struct {
 Human      //匿名字段,那么默認struct就包含了Human所有字段
 speciality string
}

func main() {
 //初始化一個學生
 mark := Student{Human{"Mark", 25, 100}, "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)
 //  修改他的年齡信息
 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é)果:

復制代碼 代碼如下:

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

相關(guān)文章

  • Goland的設(shè)置與配置全過程

    Goland的設(shè)置與配置全過程

    這篇文章主要介紹了Goland的設(shè)置與配置全過程,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-02-02
  • 淺析Go語言如何避免數(shù)據(jù)競爭Data?Race和競態(tài)條件Race?Condition

    淺析Go語言如何避免數(shù)據(jù)競爭Data?Race和競態(tài)條件Race?Condition

    在并發(fā)編程中,數(shù)據(jù)競爭?(Data?Race)?和?競態(tài)條件?(Race?Condition)?是兩個常見的問題,本文將簡單介紹一下二者如何避免,有需要的可以了解下
    2025-01-01
  • golang中使用mongo的方法介紹

    golang中使用mongo的方法介紹

    這篇文章主要給大家介紹了關(guān)于golang中使用mongo的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2018-08-08
  • 詳解Go語言strconv與其他基本數(shù)據(jù)類型轉(zhuǎn)換函數(shù)的使用

    詳解Go語言strconv與其他基本數(shù)據(jù)類型轉(zhuǎn)換函數(shù)的使用

    這篇文章將以 string 類型為中心,通過 strconv 標準庫,介紹其與其他基本數(shù)據(jù)類型相互轉(zhuǎn)換的函數(shù)。文中的示例代碼講解詳細,感興趣的可以了解一下
    2022-12-12
  • go解析YAML文件(多文檔解析)

    go解析YAML文件(多文檔解析)

    本文介紹了如何使用GO語言和client-go庫處理YAML文件,特別是在Kubernetes環(huán)境下,分析了YAML的特點,如簡潔性、易讀性、可嵌套性等,并展示了相關(guān)代碼實現(xiàn),包括單文檔和多文檔的處理方法,感興趣的可以了解一下
    2024-10-10
  • Go語言中struct的匿名屬性特征實例分析

    Go語言中struct的匿名屬性特征實例分析

    這篇文章主要介紹了Go語言中struct的匿名屬性特征,實例分析了struct的匿名屬性特征,對于深入學習Go語言程序設(shè)計具有一定參考借鑒價值,需要的朋友可以參考下
    2015-02-02
  • Golang守護進程用法示例分析

    Golang守護進程用法示例分析

    這篇文章主要介紹了Golang守護進程用法示例,創(chuàng)建守護進程首先要了解go語言如何實現(xiàn)創(chuàng)建進程,文中通過示例代碼介紹的非常詳細,需要的朋友們下面隨著小編來一起學習吧
    2023-05-05
  • Go語言編譯原理之源碼調(diào)試

    Go語言編譯原理之源碼調(diào)試

    這篇文章主要為大家介紹了Go語言編譯原理之源碼調(diào)試示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-08-08
  • 一篇文章帶你輕松搞懂Golang的error處理

    一篇文章帶你輕松搞懂Golang的error處理

    在進行后臺開發(fā)的時候,錯誤處理是每個程序員都會遇到的問題,下面這篇文章主要給大家介紹了關(guān)于Golang中error處理的相關(guān)資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-07-07
  • Go語言單元測試的實現(xiàn)及用例

    Go語言單元測試的實現(xiàn)及用例

    在日常開發(fā)中,我們通常需要針對現(xiàn)有的功能進行單元測試,以驗證開發(fā)的正確性,本文主要介紹了Go語言單元測試的實現(xiàn)及用例,具有一定的參考價值,感興趣的可以了解一下
    2024-01-01

最新評論

碌曲县| 南和县| 惠州市| 临澧县| 高尔夫| 汽车| 静乐县| 临泉县| 衡南县| 台湾省| 南通市| 松桃| 饶平县| 老河口市| 伊宁县| 西畴县| 淅川县| 微山县| 建水县| 义马市| 贡嘎县| 信丰县| 永仁县| 潢川县| 长海县| 荥经县| 老河口市| 扎囊县| 左云县| 抚州市| 岳阳市| 河西区| 呼玛县| 庄河市| 铁力市| 黑龙江省| 巴楚县| 新源县| 德州市| 洞头县| 方山县|