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

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

golang中結(jié)構(gòu)體和方法的應(yīng)用

今天就跟大家聊聊有關(guān)golang中結(jié)構(gòu)體和方法的應(yīng)用,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。

成都創(chuàng)新互聯(lián)公司是專(zhuān)業(yè)的象山網(wǎng)站建設(shè)公司,象山接單;提供成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站制作,網(wǎng)頁(yè)設(shè)計(jì),網(wǎng)站設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專(zhuān)業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行象山網(wǎng)站開(kāi)發(fā)網(wǎng)頁(yè)制作和功能擴(kuò)展;專(zhuān)業(yè)做搜索引擎喜愛(ài)的網(wǎng)站,專(zhuān)業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來(lái)合作!

結(jié)構(gòu)體用來(lái)定義復(fù)雜的數(shù)據(jù)結(jié)構(gòu),存儲(chǔ)很多相同的字段屬性

1、結(jié)構(gòu)體的定義以及簡(jiǎn)單使用

package main

import (
    "fmt"
)

func main() {
    type Student struct { //定義結(jié)構(gòu)體
        name string
        age  int
    }
    s1 := new(Student) // 定義指向結(jié)構(gòu)體的指針
    s1.name = "xiaomu"
    s1.age = 10
    fmt.Printf("name:%s\nage:%d\n", s1.name, s1.age)
}

結(jié)構(gòu)體定義的三種方式,例如上面的Student類(lèi)型,有如下方式定義

①var s1 Student      在內(nèi)存中直接定義一個(gè)結(jié)構(gòu)體變量

②s1 := new(Student)  在內(nèi)存中定義一個(gè)指向結(jié)構(gòu)體的指針

③s1 := &Student{}    同上

通過(guò)以下方式獲取存儲(chǔ)的值

①s1.name

②s1.name或者(*s1).name

③同上

2、struct中的“構(gòu)造函數(shù)”,稱(chēng)之為工廠模式,見(jiàn)代碼

package main

import (
    "fmt"
)

type Student struct { //聲明結(jié)構(gòu)體
    Name string
    Age  int
}

func NewStudent(name string, age int) *Student { // 返回值指向Student結(jié)構(gòu)體的指針
    return &Student{
        Name: name,
        Age:  age,
    }
}

func main() {
    s1 := NewStudent("xiaomu", 123) // 聲明并且賦值指向Student結(jié)構(gòu)體的指針
    fmt.Printf("name: %s\nage: %d", s1.Name, s1.Age)
}

3、特意聲明注意事項(xiàng)!??!

結(jié)構(gòu)體是值類(lèi)型,需要使用new分配內(nèi)存

4、匿名字段,直接看下面代碼

package main

import (
    "fmt"
)

func main() {
    type Class struct {
        ClassName string
    }
    type Student struct { //定義結(jié)構(gòu)體
        name  string
        age   int
        Class // 定義匿名字段,繼承了該結(jié)構(gòu)體的所有字段
    }
    s1 := new(Student) // 定義指向結(jié)構(gòu)體的指針
    s1.ClassName = "xiaomu"
    fmt.Printf("ClassName:%s\n", s1.ClassName)
}

struct的方法

1、在struct中定義方法并且使用

package main

import (
    "fmt"
)

type Student struct { //定義結(jié)構(gòu)體
    name string
    age  int
}

func (stu *Student) OutName() { // 定義Student方法
    fmt.Println(stu.name)
}

func main() {
    s1 := new(Student) // 定義指向結(jié)構(gòu)體的指針
    s1.name = "xaiomu"
    s1.OutName()
}

2、結(jié)構(gòu)體繼承結(jié)構(gòu)體,其中被繼承結(jié)構(gòu)體的方法全部為繼承結(jié)構(gòu)體吸收

package main

import (
    "fmt"
)

type ClassName struct {
    className string
}

func (cla *ClassName) OutClassName() {
    fmt.Println(cla.className)
}

type Student struct { //定義結(jié)構(gòu)體
    name      string
    age       int
    ClassName // 繼承ClassName結(jié)構(gòu)體的所有
}

func (stu *Student) OutName() { // 定義Student方法
    fmt.Println(stu.name)
}

func main() {
    s1 := new(Student) // 定義指向結(jié)構(gòu)體的指針
    s1.className = "xiaomu"
    s1.OutClassName()
}

看完上述內(nèi)容,你們對(duì)golang中結(jié)構(gòu)體和方法的應(yīng)用有進(jìn)一步的了解嗎?如果還想了解更多相關(guān)內(nèi)容,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀。


網(wǎng)站名稱(chēng):golang中結(jié)構(gòu)體和方法的應(yīng)用
文章網(wǎng)址:http://weahome.cn/article/ishsed.html

其他資訊

在線咨詢(xún)

微信咨詢(xún)

電話咨詢(xún)

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部