91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

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

乐陵市| 澄江县| 尼木县| 昌平区| 宣威市| 高安市| 抚远县| 辛集市| 三门峡市| 普定县| 敦化市| 本溪| 潜山县| 太康县| 永福县| 贵州省| 黔南| 伊通| 墨脱县| 西宁市| 普兰县| 那曲县| 汝南县| 龙泉市| 航空| 镇坪县| 大埔县| 太和县| 榆树市| 黔南| 衡东县| 故城县| 石渠县| 长泰县| 宁南县| 密云县| 东兰县| 天峻县| 沁水县| 清新县| 连州市|