亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

golang中結構體和方法的應用

發布時間:2020-06-22 17:56:44 來源:億速云 閱讀:302 作者:Leah 欄目:編程語言

今天就跟大家聊聊有關golang中結構體和方法的應用,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。

結構體用來定義復雜的數據結構,存儲很多相同的字段屬性

1、結構體的定義以及簡單使用

package main

import (
    "fmt"
)

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

結構體定義的三種方式,例如上面的Student類型,有如下方式定義

①var s1 Student      在內存中直接定義一個結構體變量

②s1 := new(Student)  在內存中定義一個指向結構體的指針

③s1 := &Student{}    同上

通過以下方式獲取存儲的值

①s1.name

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

③同上

2、struct中的“構造函數”,稱之為工廠模式,見代碼

package main

import (
    "fmt"
)

type Student struct { //聲明結構體
    Name string
    Age  int
}

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

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

3、特意聲明注意事項!!!

結構體是值類型,需要使用new分配內存

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

package main

import (
    "fmt"
)

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

struct的方法

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

package main

import (
    "fmt"
)

type Student struct { //定義結構體
    name string
    age  int
}

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

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

2、結構體繼承結構體,其中被繼承結構體的方法全部為繼承結構體吸收

package main

import (
    "fmt"
)

type ClassName struct {
    className string
}

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

type Student struct { //定義結構體
    name      string
    age       int
    ClassName // 繼承ClassName結構體的所有
}

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

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

看完上述內容,你們對golang中結構體和方法的應用有進一步的了解嗎?如果還想了解更多相關內容,歡迎關注億速云行業資訊頻道,感謝各位的閱讀。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

河北省| 凤台县| 涟源市| 通许县| 云南省| 惠东县| 曲阜市| 大英县| 寿光市| 柘荣县| 闻喜县| 宁晋县| 炉霍县| 武清区| 四会市| 娱乐| 鹿邑县| 隆尧县| 邛崃市| 涿鹿县| 抚州市| 桂平市| 原阳县| 庐江县| 福安市| 沁源县| 临潭县| 海原县| 团风县| 牙克石市| 韩城市| 台前县| 宽城| 邵阳市| 肃宁县| 英山县| 桐梓县| 达日县| 将乐县| 隆昌县| 临潭县|