第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

全部開發(fā)者教程

Go 入門教程

Go 語(yǔ)言基礎(chǔ)教程
01 Go語(yǔ)言簡(jiǎn)介 02 Go 在 Windows 上的安裝及配置 03 Go 在 Linux 上的安裝與配置 04 Go 在 MacOS 上的安裝及配置 05 Git 的下載和安裝 06 VSCode 編輯器安裝和配置 07 Go 的變量聲明 08 Go 的變量賦值 09 Go 語(yǔ)言的 := 10 Go 的整型(int) 11 Go 的無(wú)符號(hào)整型(uint) 12 Go 的浮點(diǎn)型(float) 13 Go 的字符類型 14 Go 的布爾型(bool) 15 Go 的強(qiáng)制類型轉(zhuǎn)換 16 Go 語(yǔ)言的常量 17 Go 語(yǔ)言中代替枚舉的辦法 18 Go 語(yǔ)言中的運(yùn)算符 19 Go 語(yǔ)言的分支語(yǔ)句 20 Go 語(yǔ)言的循環(huán)語(yǔ)句 21 Go 語(yǔ)言的通道 22 Go 語(yǔ)言中的函數(shù) 23 Go 語(yǔ)言函數(shù)中的 defer 24 Go 語(yǔ)言中的閉包 25 Go 語(yǔ)言的指針 26 Go 語(yǔ)言中的數(shù)組 27 Go 語(yǔ)言中的切片 28 Go 語(yǔ)言中的 Map 29 Go 語(yǔ)言中的 range 30 Go 語(yǔ)言拓展以有類型 31 Go 語(yǔ)言中的結(jié)構(gòu)體和"面向?qū)ο?quot; 32 Go 語(yǔ)言中的接口 33 Go 語(yǔ)言類型的內(nèi)嵌 34 Go 語(yǔ)言中的 nil 35 Go 語(yǔ)言函數(shù)式編程 36 Go 語(yǔ)言中的錯(cuò)誤和異常處理 37 Go 語(yǔ)言的并發(fā) 38 Go 語(yǔ)言中的包 39 Go 語(yǔ)言 go mod 包依賴管理工具 40 Go 語(yǔ)言的文件操作 41 Go 語(yǔ)言中的系統(tǒng)包 42 Go 語(yǔ)言的 strings 系統(tǒng)包的使用 43 Go 語(yǔ)言中的變參 44 Go 語(yǔ)言中的反射 45 Go 語(yǔ)言性能測(cè)試 46 使用 Go 語(yǔ)言搭建簡(jiǎn)易登錄功能 47 使用 gin 包優(yōu)化登錄功能
首頁(yè) 慕課教程 Go 入門教程 Go 入門教程 31 Go 語(yǔ)言中的結(jié)構(gòu)體和"面向?qū)ο?quot;

本文主要來(lái)講解一下 Go 語(yǔ)言的結(jié)構(gòu)體數(shù)據(jù)類型,以及 Go 語(yǔ)言中的"面向?qū)ο?,為什么要加雙引號(hào)呢?因?yàn)?Go 語(yǔ)言中沒(méi)有明確的面向?qū)ο蟮母拍?,?dāng)然也沒(méi)有明確的面向過(guò)程的概念。面向哪一方面編程完全取決于你如何使用,如果你想要面向?qū)ο缶幊?,Go 語(yǔ)言中提供了相對(duì)應(yīng)的解決方案來(lái)模擬面向?qū)ο蟆?/p>

1. 結(jié)構(gòu)體類型

想要模擬面向?qū)ο缶褪紫纫私庖幌?Go 語(yǔ)言中的結(jié)構(gòu)體類型。當(dāng)你需要兩個(gè)以上的基本數(shù)據(jù)類型或自定義類型來(lái)聲明定義函數(shù)的時(shí)候,你就可以使用結(jié)構(gòu)體。結(jié)構(gòu)體變量使用struct{...}的形式來(lái)定義。

代碼示例:

package main

import (
    "fmt"
    "reflect"
)

func main() {
    var student1 struct {
        Name string
        Age  int
    }
    student1.Name = "Codey"
    student1.Age = 18

    fmt.Println("student1數(shù)據(jù)類型:", reflect.TypeOf(student1))
    fmt.Println("student1的值:", reflect.ValueOf(student1))

    student2 := struct {
        Name string
        Age  int
    }{
        Name: "Codey",
        Age:  18, //這個(gè)逗號(hào)千萬(wàn)不能忘記,若是和大括號(hào)同行,這個(gè)逗號(hào)才可以省略
    }

    fmt.Println("student2數(shù)據(jù)類型:", reflect.TypeOf(student2))
    fmt.Println("student2的值:", reflect.ValueOf(student2))
}
  • 第 9~12 行:聲明一個(gè)結(jié)構(gòu)體變量 student1,其屬性為 string 類型的 Name 和 int 類型的 Age。
  • 第 13 行:給結(jié)構(gòu)體變量的 Name 屬性賦值。
  • 第 14 行:給結(jié)構(gòu)體變量的 Age 屬性賦值。
  • 第 19~25 行:定義一個(gè)結(jié)構(gòu)體變量 student2,其屬性為 string 類型的 Name 和 int 類型的 Age,并賦初值。

執(zhí)行結(jié)果:

圖片描述

2. 使用自定義類型來(lái)模擬對(duì)象

使用自定義數(shù)據(jù)類型的方式來(lái)自定義一個(gè)結(jié)構(gòu)體類型,這樣就可以達(dá)到定義一個(gè)對(duì)象的相同效果。

代碼示例:

package main

import (
    "fmt"
    "reflect"
)

type Student struct {
    Name string
    Age  int
}

func main() {
    var student1 Student
    student1.Name = "Codey"
    student1.Age = 18

    fmt.Println("student1數(shù)據(jù)類型:", reflect.TypeOf(student1))
    fmt.Println("student1的值:", reflect.ValueOf(student1))
}
  • 第 8~11 行:自定義一個(gè)結(jié)構(gòu)體數(shù)據(jù)類型 Student。也可以解讀為,創(chuàng)建一個(gè)"Student類";
  • 第 14 行:聲明一個(gè) Student 類型的變量 student1。也可以解讀為,創(chuàng)建一個(gè)"Student對(duì)象"。

執(zhí)行結(jié)果:

圖片描述

Go 語(yǔ)言中的函數(shù)為自定義數(shù)據(jù)類型提供了一種特別的使用方式,形如func(變量名 自定義數(shù)據(jù)類型)函數(shù)名(...){...}。函數(shù)名前可以接收一個(gè)自定數(shù)據(jù)類型的參數(shù),參數(shù)傳遞的形式為自定義數(shù)據(jù)類型變量.函數(shù)名()的形式傳遞,這樣外表看起來(lái)就和面向?qū)ο缶幊桃恢铝恕?/p>

代碼示例:

package main

import (
    "fmt"
)

type Student struct {
    Name string
    Age  int
}

func newStudent(name string, age int) Student {
    return Student{Name: name, Age: age}
}
func (s Student) PrintAge() {
    fmt.Println(s.Age)
}
func main() {
    student1 := newStudent("Codey", 18)
    student2 := newStudent("Tom", 19)
    fmt.Println("student1年齡:")
    student1.PrintAge()
    fmt.Println("student2年齡:")
    student2.PrintAge()
}
  • 第 15~17 行:打印傳入的 Student 自定義類型參數(shù) Age 屬性。也可以解讀為創(chuàng)建一個(gè)打印學(xué)生"對(duì)象"年齡的"方法";
  • 第 22 行:使用自定義類型變量 student1 為參數(shù)調(diào)用 PrintAge。也可也解讀為 student1 "對(duì)象"調(diào)用PrintAge “方法”。

4. 小結(jié)

本文主要介紹了 Go 語(yǔ)言中另類的面向?qū)ο?。Go 語(yǔ)言中雖然沒(méi)有真正意義上的面向?qū)ο?,但是它可以通過(guò)結(jié)構(gòu)體+自定義數(shù)據(jù)類型的方式對(duì)面向?qū)ο筮M(jìn)行模擬。所以可見(jiàn) Go 語(yǔ)言是一個(gè)非常靈活的語(yǔ)言,它的走向和創(chuàng)造力完全取決于開發(fā)者的思維方式。