日本免费精品_最新日韩一区_亚洲视频一区在线_a在线视频观看_天天射夜夜骑_粉嫩av一区二区三区_欧美中日韩免费视频_综合图区欧美_国内精品美女在线观看_午夜精品久久久久久久男人的天堂

首頁 > 編程 > Golang > 正文

Golang極簡入門教程(二):方法和接口

2020-04-01 19:26:02
字體:
供稿:網(wǎng)友
這篇文章主要介紹了Golang極簡入門教程(二):方法和接口,本文同時講解了錯誤、匿名域等內(nèi)容,需要的朋友可以參考下
 

方法

在 Golang 中沒有類,不過我們可以為結(jié)構(gòu)體定義方法。我們看一個例子:

復(fù)制代碼代碼如下:

package main
 
import (
    "fmt"
    "math"
)
 
type Vertex struct {
    X, Y float64
}
 
// 結(jié)構(gòu)體 Vertex 的方法
// 這里的方法接收者(method receiver)v 的類型為 *Vertex
func (v *Vertex) Abs() float64 {
    return math.Sqrt(v.X*v.X + v.Y*v.Y)
}
 
func main() {
    v := &Vertex{3, 4}
    fmt.Println(v.Abs())
}

 

在這里方法的接收者使用指針類型而非值類型主要出于以下幾點考慮(類似 C/C++ 等語言):

1.避免方法每次調(diào)用時,對接收者的不必要的拷貝
2.在方法內(nèi)可以修改接收者的值

我們可以為任意類型定義方法,但以下情況除外:

1.如果類型定義在其他包中,不能為其定義方法
2.如果類型是基礎(chǔ)類型,不能為其定義方法

 

復(fù)制代碼代碼如下:

package main
 
import (
    "fmt"
    "math"
)
 
// 定義一個類型 MyFloat
type MyFloat float64
 
// 注意此方法關(guān)聯(lián)的類型是 MyFloat 而不是 *MyFloat
func (f MyFloat) Abs() float64 {
    if f < 0 {
        return float64(-f)
    }
    return float64(f)
}
 
func main() {
    f := MyFloat(-math.Sqrt2)
    fmt.Println(f.Abs())
}

 

接口(interface)

接口也是一種類型(就像結(jié)構(gòu)體一樣)。一個接口類型包含了一組方法,一個接口類型能夠持有那些實現(xiàn)了這些方法的值。范例:

復(fù)制代碼代碼如下:

// 定義接口 Abser
type Abser interface {
    Abs() float64
}
 
// 定義結(jié)構(gòu)體 Vertex
type Vertex struct {
    X, Y float64
}
 
// 實現(xiàn)方法 Abs
func (v *Vertex) Abs() float64 {
    return math.Sqrt(v.X*v.X + v.Y*v.Y)
}
 
func main() {
    v := Vertex{3, 4}
    // 成功,能夠持有 *Vertex 類型的值
    var a Abser = &v
    // 出錯,不能持有 Vertex 類型的值
    // 因為在 *Vertex 上定義了方法 Abs,而未在 Vertex 上定義
    var b Abser = v
}

 

錯誤

Golang 提供了一個 error 接口:

復(fù)制代碼代碼如下:

type error interface {
    Error() string
}

 

我們通過 os.Open 函數(shù)來了解一下 error 的用法:

復(fù)制代碼代碼如下:

// 此函數(shù)用于打開一個文件
// 返回的第二個值為 error 類型
func Open(name string) (file *File, err error)

 

簡單的例子:

復(fù)制代碼代碼如下:

package main
 
import (
    "fmt"
    "os"
)
 
func main() {
    _, err := os.Open("test.txt")
    // 如果 err 不為 nil 表示存在錯誤
    if err != nil {
        fmt.Println(err)
    }
}

 

創(chuàng)建一個 error 值的最簡單方式是使用 errors.New 函數(shù):

復(fù)制代碼代碼如下:

func Sqrt(f float64) (float64, error) {
    if f < 0 {
        // 出錯時返回一個錯誤
        return 0, errors.New("math: square root of negative number")
    }
    // ...
}

我們也可以定義一個新的 error 的實現(xiàn)(也就是實現(xiàn)接口 error):
復(fù)制代碼代碼如下:

type NegativeSqrtError float64
 
func (f NegativeSqrtError) Error() string {
    return fmt.Sprintf("math: square root of negative number %g", float64(f))
}

 

匿名域

結(jié)構(gòu)體中可以存在只有類型而沒有名字的域,它們被叫做匿名域。例如:

復(fù)制代碼代碼如下:

struct {
    T1
    *T2
}

 

一個結(jié)構(gòu)體的匿名域中的域或者方法可以被此結(jié)構(gòu)體實例直接訪問:

復(fù)制代碼代碼如下:

package main
 
import "fmt"
 
type Car struct {
    wheelCount int
}
 
func (car *Car) numberOfWheels() int {
    return car.wheelCount
}
 
type Ferrari struct {
    Car
}
 
func main() {
    f := Ferrari{Car{4}}
    fmt.Println("A Ferrari has this many wheels: ", f.numberOfWheels())
}
 

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
粉嫩喷白浆久久| 国产日产一区二区| 亚洲国产综合久久| 亚洲精品欧美二区三区中文字幕| 粉嫩粉嫩芽的虎白女18在线视频| 国产精久久久久| 欧美中文字幕精品| 亚洲一二三不卡| 亚洲综合在线不卡| 久久精品卡一| 国产偷国产偷亚洲清高网站 | 精品视频资源站| 亚洲第一中文字幕| 日韩欧美中文第一页| 国产91欧美| 日韩.欧美.亚洲| 国产免费永久在线观看| 中文精品在线| 欧美日韩国产高清一区| 欧美日韩在线不卡视频| 亚洲第一视频| 中文字幕久精品免费视频| 精品成a人在线观看| 丰满少妇一区| 日韩欧美一级在线| 欧美日韩高清| 欧美一级二级三级区| 国产视频一区三区| 欧美日韩激情一区| 二区中文字幕| 国产拍揄自揄精品视频麻豆| 国产成人精品av久久| 久久精品99国产国产精| 欧美日韩999| 欧美日韩在线三级| 久久久久久自在自线| 国产婷婷色一区二区三区| 欧美 日韩 综合| 中文字幕欧美日韩在线| 香蕉av一区| 日韩欧美国产片| 91精品国产免费| 精品国产99| 高清1区2区| 国产午夜在线观看| 欧美中日韩在线| 欧美日韩国产三级| 在线日韩精品视频| 日韩高清不卡在线| 日韩av二区| 国产资源在线观看| 亚洲免费在线观看av| 一级日韩一级欧美| 欧美日韩精品电影| 欧美一级欧美三级在线观看| 深夜日韩欧美| 久久99精品国产| 午夜国产欧美理论在线播放| 欧美日韩一二| 国产一区在线观看视频| 久久精品一二三| 黄色一区二区在线| 不卡视频一区二区| 国产三级视频网站| 69免费视频| 国产一区 二区 三区一级| 欧美国产一级| 日韩精品免费视频一区二区三区| 麻豆精品视频入口| 国产成人精品免费网站| 国产午夜精品全部视频播放| 久久久精品欧美| 日韩在线欧美| 欧美三级日本三级少妇99| 国产视频97| 久久久久久自在自线| 欧美日韩国产在线播放| 中文字幕在线观看欧美| 中文字幕欧美国内| 中文字幕线观看| 欧美日韩一级黄| 国产欧美日韩中文| 深夜福利一区| 欧美三级三级三级爽爽爽| 国产精久久久久| 精品国产乱码久久久久久牛牛| 亚洲免费在线视频一区 二区 | 久久精品卡一| 黄色一区二区视频| 久久精品欧美日韩精品| av免费在线播放| 婷婷中文字幕一区三区| 蜜桃视频一日韩欧美专区| 亚洲黄在线观看| av免费观看网站| 日韩免费精品视频| 欧美日韩在线播放三区四区| 国产日韩中文字幕| 亚洲第一福利视频在线| 亚洲中午字幕| 香蕉精品久久| 亚洲一区在线观看网站| 免费高清视频日韩| 在线欧美日韩精品| а√天堂中文在线资源8| 精品国产欧美日韩不卡在线观看| 91欧美日韩在线| 亚洲第一香蕉网| 久久久99免费| 中文字幕日韩欧美在线视频| √天堂资源中文www| 亚洲最新免费视频| 日韩免费精品| 欧美三级精品| 日韩久久99| 色综合天天性综合| 日韩精品资源二区在线| 91久久视频| 日韩欧美一级在线播放| 亚洲娇小xxxx欧美娇小| 国产成人精品999在线观看| 欧美特黄一区| 中文字幕欧美亚洲| 一区二区三区四区五区视频在线观看| 欧美三级网址| 日韩欧美999| www..com日韩| 日韩中文字幕在线观看视频| 中文字幕日韩国产| 欧美二三四区| 一区二区欧美国产| 亚洲免费视频一区| 午夜精品一区二区三区视频免费看| 欧美日韩久久久| 精品久久在线观看| 日韩免费精品| 国产视频1区2区| 精品对白一区国产伦| 在线不卡日本| 欧美日韩国产免费观看| 欧美日韩中国免费专区在线看| 欧美日韩国产高清一区| 在线精品日韩| 在线欧美一级视频| 亚洲视频中文字幕| 一区二区不卡视频在线观看| 日韩欧美国产1| 欧美日韩综合在线观看| 亚洲永久字幕| 日韩 欧美 综合| 亚洲精品中文字幕乱码三区| 国产99精品| 国产香蕉精品视频| 一本一道久久a久久精品综合蜜臀| 中文字幕久久av| 91精品国产91久久久久久不卡| 日韩综合精品| 久久精品国产91精品亚洲| 日韩欧美一级在线播放| 欧美国产小视频| www中文字幕在线观看| www高清在线视频日韩欧美| 精品福利一区二区三区| 日韩欧美资源站| 日本а中文在线天堂| 国产一级在线| 国产三级做爰在线观看| 国产69精品久久app免费版| 中文 欧美 日韩| 国产小视频在线观看免费| 一区二区三区高清在线| 一区二区三区中文字幕在线观看| 亚洲国产专区| 欧美99久久| 日韩久久精品成人| 欧美日韩久久不卡| 久久精品久久精品亚洲人| 欧美日韩中文字幕一区| 日韩欧美不卡在线| wwwav在线播放| 日韩一级中文字幕| 高清中文字幕在线| 一区在线免费| 国产午夜精品一区二区三区视频| 亚洲综合在线视频| 日韩中文字幕视频在线观看| 欧美 日韩 国产 在线观看| 日韩亚洲不卡在线| 久草视频观看| 国产欧美日韩不卡免费| wwwwww在线观看| 中文亚洲欧美| 欧美日韩不卡在线视频| 蜜臀久久精品| 国产欧美日韩中文字幕在线| 天堂在线中文| 国产午夜精品视频| av一区在线观看| 国产欧美日韩综合| 樱花草www在线| 国产乱国产乱300精品| 日韩 欧美 中文| 精品视频www| 国产 日韩 欧美 综合| 91欧美在线| 99精品在线播放| 欧美日韩一二三四| 欧美 日韩 国产 高清| 久久69成人| 亚洲欧洲国产视频| 黄色一区二区在线| 亚洲女人天堂色在线7777| 国产激情在线视频| 久久riav| 欧美日韩国产不卡在线看| 日韩精品中文在线观看| av三级在线播放| 国产欧美日韩中文字幕在线| 精品国产1区二区| 国产视频中文字幕| 国产在线观看91| 国产日韩中文字幕| 国产一区免费视频| 欧美日韩在线视频一区| 中文字幕在线亚洲| 欧美日韩在线综合| 精品精品久久| 精品久久久网| 日本精品免费观看高清观看| 日韩三级视频在线看| 亚洲一级在线| 久久精品电影| 日韩高清不卡| 日韩网站中文字幕| 欧美不卡视频| 精品视频—区二区三区免费| 国产高清精品在线| 日韩中文字幕精品视频| 精品国产欧美日韩不卡在线观看| 国产日韩亚洲欧美| 国产免费一级| 中文字幕欧美在线| 91精品国产91久久久久久久久 | 欧美日韩国产在线| 欧美日韩精品在线视频| 欧美不卡视频一区发布| 国产黄在线观看| 亚洲福利精品在线| 欧美午夜精品在线| 国产无遮挡在线视频免费观看| 搞黄在线观看| 日韩欧美一级精品久久| 色猫猫国产区一区二在线视频| 精品999在线| 精品免费视频| 天天综合天天添夜夜添狠狠添| 国产精品福利视频一区二区三区| 福利一区二区| 国产三级精品在线观看| 成人福利一区| 国产99在线 | 亚洲| 日韩亚洲国产欧美| 欧美在线亚洲一区| 日韩精品高清不卡| 日韩在线三区| 欧美日韩亚洲不卡| 在线视频一区二区三区在线播放| 日韩三级高清在线| 国产不卡的av| 中文字幕欧美亚洲| 99中文字幕一区| 久久99久久99精品中文字幕| 日韩精品a在线观看91| 欧美亚洲天堂| 日韩国产高清一区| 日韩欧美中文字幕在线观看| 国产福利一区二区在线精品| 欧美一级欧美三级在线观看| 欧美日韩一级黄| 国产日韩专区| 先锋男人资源站| 91精品在线视频观看| 国产午夜精品全部视频播放| 日韩欧美在线不卡| 日本国产一区| 欧美日韩在线播放三区四区| 国产wwww| 91亚洲国产| 在线视频1区2区| 77777_亚洲午夜久久多人| 日韩精品欧美在线| 国产一区二中文字幕在线看| 欧美日韩国产大片| 视频一区不卡| 午夜一区二区视频| 亚洲高清在线免费| 一区在线免费| 日韩欧美中文字幕一区| 精品播放一区二区| 欧美日韩一级黄| 亚洲日本欧美日韩高观看| 麻豆一区二区99久久久久| 日韩欧美一卡二卡| 91精品国产色综合久久不卡蜜臀 | 久久网站免费观看| 色综合天天综合网天天狠天天| 亚洲女人天堂色在线7777| 国产日韩1区| 国产一二三精品| 国产伦精品免费视频| 欧美日韩中文字幕视频| av一区在线观看| 91精品国产经典在线观看| 久久 天天综合| 国产乱国产乱老熟300部视频| 中文字幕久久av| 国产日韩1区| 91精品视频国产| 麻豆精品99| 午夜福利一区二区三区| 日韩欧美一二三| 中文字幕在线观看国产| 91久久精品网| 国产字幕中文| 亚洲大片精品永久免费| 国产一级在线| 91精品国产色综合久久不卡蜜臀| 在线视频一区二区三区在线播放| 综合激情一区| 中文字幕成人乱码在线电影| 中文字幕在线看视频国产欧美| 91精品在线免费| 日韩av不卡在线观看| 久久久久久久久综合| 国产欧美三级| 91一区二区| 黄色一区二区视频| 欧美大片在线观看一区 | 中文字幕亚洲国产| 国产精品一区二三区| 欧美日韩高清在线播放| 精品午夜av| 日韩欧美综合| 国产福利免费观看| 影音先锋一区二区资源站| 国产三级视频网站| 欧美区高清在线| 热久久精品国产| 91精品国产日韩91久久久久久| 精品欧美久久久| 美女在线视频一区| 国产免费播放一区二区| 欧美日韩国产免费观看| 国产日韩专区| 精品视频999| 精品成人久久av| 日韩一级二级三级| 亚洲欧美99| 中文字幕在线观看网址| 日韩三级视频在线| 亚洲最新永久观看在线| 顶级网黄在线播放| 欧美日韩中文| 亚洲欧美韩国综合色| 欧美日韩国产区| 91精品国产91久久久久青草| 久久精品久久精品国产大片| 免费在线播放av| 91精品日本| 日韩中文字幕在线视频观看| 欧美日韩国产91| 视频一区二区中文字幕| 91精品婷婷国产综合久久| 国产黄在线看| 国产婷婷色一区二区三区| 日本黄色一区二区三区| 日韩中文字幕在线一区| 国产高清精品在线观看| 国产在线第一页| 欧美日韩亚洲系列| 国产黄色在线看| 一区二区不卡在线| 日韩影院二区| 日韩欧美国产网站| 日本精品在线播放| 日韩在线视频免费观看 | 欧美日韩国产综合视频在线观看中文| 欧美熟妇乱码在线一区| 日韩欧美国产午夜精品| 国产黄在线观看免费观看不卡| 亚洲高清视频在线| 亚洲乱码视频| 最新中文字幕在线| 国产一区免费视频| 亚洲免费精品| 午夜国产视频 | 狠狠色噜噜狠狠狠狠97| 精品av中文字幕在线毛片| 日韩视频在线免费看| 日韩精品视频在线播放|