真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

go語(yǔ)言中struct結(jié)構(gòu)體的使用-創(chuàng)新互聯(lián)

一、struct的特點(diǎn)

  • 1、用來(lái)自定義復(fù)雜數(shù)據(jù)結(jié)構(gòu)
  • 2、struct里面可以包含多個(gè)字段(屬性)
  • 3、struct類型可以定義方法,注意和函數(shù)的區(qū)分
  • 4、struct類型是值類型
  • 5、struct類型可以嵌套
  • 6、GO語(yǔ)言沒有class類型,只有struct類型

二、struct的定義

1、struct聲明:

目前創(chuàng)新互聯(lián)公司已為1000多家的企業(yè)提供了網(wǎng)站建設(shè)、域名、網(wǎng)絡(luò)空間、網(wǎng)站托管維護(hù)、企業(yè)網(wǎng)站設(shè)計(jì)、濮陽(yáng)縣網(wǎng)站維護(hù)等服務(wù),公司將堅(jiān)持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長(zhǎng),共同發(fā)展。
type 標(biāo)識(shí)符 struct {
    Name string
    Age int
    Score int
}

2、struct 中字段訪問:和其他語(yǔ)言一樣,使用點(diǎn)
例子

type Student struct {
    Name string
    Age int
    Score int
}

func main(){
    var stu Student
    stu.Name = "lilei"
    stu.Age = 22
    stu.Score = 20
    fmt.Printf("name=%s age=%d score=%d",stu.Name,stu.Age,stu.Score)
}

3、struct定義的三種形式:
a:   var stu Student
b:  var stu Student = new(Student)
c:  var stu
Student = &Student{}
(1)其中b和c返回的都是指向結(jié)構(gòu)體的指針,訪問形式如下
stu.Name、stu.Age和stu.Score 或者(stu).Name、(stu).Age、(*stu).Scroe

三、struct的初始化

1、struct的內(nèi)存布局:struct中的所有字段在內(nèi)存是連續(xù)的,布局如下:

type Rect1 struct { Min, Max point}
type Rect2 struct { Min, Max *point}

2、鏈表定義
type School struct {
    Name School
    Next *School
}

每個(gè)節(jié)點(diǎn)包含下一個(gè)節(jié)點(diǎn)的地址,這樣把所有的節(jié)點(diǎn)串起來(lái),通常把鏈表的第一個(gè)節(jié)點(diǎn)叫做鏈表頭

3、雙鏈表定義
type School struct {
    Name string
    Next *School
    Prev *School
}

如果有兩個(gè)指針分別指向前一個(gè)節(jié)點(diǎn)和后一個(gè)節(jié)點(diǎn)叫做雙鏈表。

4、二叉樹定義

type School struct {
Name string
Left School
Right
School
}
如果每個(gè)節(jié)點(diǎn)有兩個(gè)指針分別用來(lái)指向左子樹和右子樹,我們把這樣的結(jié)構(gòu)叫做二叉樹

四、特殊自處

1、結(jié)構(gòu)體是用戶單獨(dú)定義的類型,不能和其他類型進(jìn)行強(qiáng)制轉(zhuǎn)換
2、golang中的struct沒有構(gòu)造函數(shù),一般可以使用工廠模式來(lái)解決這個(gè)問題
package model
type student struct {
  Name string
  Age int
}
 func NewStudent(name string,age int) *student {
  return &student{
    Name:name,
    Age:age,
  }
}
package main
S := new(student)
S := model.NewStudent("tom",20)
3、我們可以為struct中的每個(gè)字段,寫上一個(gè)tag。這個(gè)tag可以通過反射的機(jī)制獲取到,最常用的場(chǎng)景就是json序列化和反序列化。
type student struct {
  Name string `json="name"`
  Age string `json="age"`
}
4、結(jié)構(gòu)體中字段可以沒有名字,即匿名字段
type Car struct {
  Name string
  Age int
}

type Train struct {
  Car
  Start time.Time
  int
}
5、匿名字段的沖突處理
type Car struct {
  Name string
  Age int
}
type Train struct {
  Car
  Start time.Time
  Age int
}

type A struct {
  a int
}
type B struct {
  a int
  b int
}
type C struct {
  A
  B
}

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。


網(wǎng)頁(yè)標(biāo)題:go語(yǔ)言中struct結(jié)構(gòu)體的使用-創(chuàng)新互聯(lián)
URL鏈接:http://weahome.cn/article/csdjpo.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部