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

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

go語(yǔ)言中struct結(jié)構(gòu)體的使用

一、struct的特點(diǎn)

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

二、struct的定義

1、struct聲明:

創(chuàng)新互聯(lián)建站自2013年創(chuàng)立以來(lái),是專(zhuān)業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項(xiàng)目成都網(wǎng)站設(shè)計(jì)、網(wǎng)站制作網(wǎng)站策劃,項(xiàng)目實(shí)施與項(xiàng)目整合能力。我們以讓每一個(gè)夢(mèng)想脫穎而出為使命,1280元溫宿做網(wǎng)站,已為上家服務(wù),為溫宿各地企業(yè)和個(gè)人服務(wù),聯(lián)系電話:028-86922220

type 標(biāo)識(shí)符 struct {
    Name string
    Age int
    Score int
}

2、struct 中字段訪問(wèn):和其他語(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)體的指針,訪問(wèn)形式如下
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è)指針?lè)謩e指向前一個(gè)節(jié)點(diǎn)和后一個(gè)節(jié)點(diǎn)叫做雙鏈表。

4、二叉樹(shù)定義

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

四、特殊自處

1、結(jié)構(gòu)體是用戶(hù)單獨(dú)定義的類(lèi)型,不能和其他類(lèi)型進(jìn)行強(qiáng)制轉(zhuǎn)換
2、golang中的struct沒(méi)有構(gòu)造函數(shù),一般可以使用工廠模式來(lái)解決這個(gè)問(wèn)題
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è)字段,寫(xiě)上一個(gè)tag。這個(gè)tag可以通過(guò)反射的機(jī)制獲取到,最常用的場(chǎng)景就是json序列化和反序列化。
type student struct {
  Name string `json="name"`
  Age string `json="age"`
}
4、結(jié)構(gòu)體中字段可以沒(méi)有名字,即匿名字段
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
}

分享文章:go語(yǔ)言中struct結(jié)構(gòu)體的使用
文章起源:http://weahome.cn/article/gidsgo.html

其他資訊

在線咨詢(xún)

微信咨詢(xún)

電話咨詢(xún)

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部