亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁(yè) > 編程 > Golang > 正文

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

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

方法

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

復(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())
}

 

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

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

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

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

 

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

package main
 
import (
    "fmt"
    "math"
)
 
// 定義一個(gè)類型 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)體一樣)。一個(gè)接口類型包含了一組方法,一個(gè)接口類型能夠持有那些實(shí)現(xiàn)了這些方法的值。范例:

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

// 定義接口 Abser
type Abser interface {
    Abs() float64
}
 
// 定義結(jié)構(gòu)體 Vertex
type Vertex struct {
    X, Y float64
}
 
// 實(shí)現(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
    // 出錯(cuò),不能持有 Vertex 類型的值
    // 因?yàn)樵?*Vertex 上定義了方法 Abs,而未在 Vertex 上定義
    var b Abser = v
}

 

錯(cuò)誤

Golang 提供了一個(gè) error 接口:

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

type error interface {
    Error() string
}

 

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

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

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

 

簡(jiǎn)單的例子:

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

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

 

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

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

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

我們也可以定義一個(gè)新的 error 的實(shí)現(xiàn)(也就是實(shí)現(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)體中可以存在只有類型而沒(méi)有名字的域,它們被叫做匿名域。例如:

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

struct {
    T1
    *T2
}

 

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

復(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ā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
精品国内产的精品视频在线观看| 国产在线日韩| 亚洲精品视频在线播放| 日日噜噜夜夜狠狠| 欧美日本一区二区视频在线观看| 在线观看视频一区二区欧美日韩| 残酷重口调教一区二区| av动漫免费观看| 热99在线视频| 午夜在线观看一区| 亚洲综合色站| 久久91麻豆精品一区| 国产不卡精品视男人的天堂| a视频在线播放| 母乳一区在线观看| 国产又爽又黄又舒服又刺激视频| 日本免费一区二区三区四区| 婷婷激情小说网| 日本午夜免费福利视频| 国产精品久久久亚洲第一牛牛| www.91视频com| 国产精品国产一区二区三区四区| 免费成人在线观看| 中文字幕欧美一区二区| 欧美在线性爱视频| 日韩黄色三级在线观看| 免费看毛片的网址| 成人在线视频免费播放| 日韩一区精品| 国产偷人妻精品一区二区在线| 成年人免费在线视频| 午夜婷婷在线观看| 国产孕妇孕交大片孕| 亚洲国产成人精品久久| 东京热无码av男人的天堂| 在线看av的网址| 国产日韩亚洲欧美综合| 国产青春久久久国产毛片| 电影亚洲精品噜噜在线观看| 亚洲成人a**站| 日韩中文字幕av| 成人软件网18免费视频| 亚洲激情 欧美| 夜夜嗨av色综合久久久综合网| 免费在线亚洲欧美| 日本一二三区视频| 青青国产精品| 欧美精品午夜| 影音先锋中文字幕在线播放| 97国产真实伦对白精彩视频8| 国产91ⅴ在线精品免费观看| 亚洲资源网站| 欧美日韩国产综合视频在线观看| 国产一区二区在线视频你懂的| 亚洲女人av| 亚洲天堂在线播放| 91久久线看在观草草青青| 天海翼女教师无删减版电影| 国产成人精品1024| 无码av中文一区二区三区桃花岛| 亚洲AV无码成人精品区明星换面| 在线视频se| 国产激情视频一区| 被男同事摸的水好多| 一区二区三区在线免费观看| 香蕉521av成人网| 成人ar影院免费观看视频| 夜夜嗨网站十八久久| 国产亚洲精品美女| 天堂中文字幕在线| 亚洲精品乱码久久久久久蜜桃动漫| 精品91久久久久| av播放在线观看| 亚洲精品黄色| 黑人精品欧美一区二区蜜桃| 国产美女自慰在线观看| 亚洲第一福利网站| 国产污视频在线| 精品国产免费一区二区三区香蕉| 91精品国产高久久久久久五月天| 精品欧美久久| 国产精品久久久久久久久久久久久久久久久| 成人免费视频国产免费| 久久视频中文字幕| 欧美性猛交99久久久久99| 亚洲精品综合在线观看| 91社区视频| 久久久天堂av| 国产精品综合久久久| 午夜先锋成人动漫在线| 欧美中文字幕在线视频| 成本人h片动漫网站在线观看| 欧美黑人国产人伦爽爽爽| 亚洲综合色婷婷| 男人和女人做事情在线视频网站免费观看| 怡红院男人天堂| 欧美日韩三区四区| 天天色天天操综合| 亚洲激情二区| 黄色成人小视频| 欧美日韩视频一区二区三区| 色老板亚洲精品一区| 99精品国产九九国产精品| 色图在线观看| 中国黄色片视频| 欧美最猛黑人xxxx黑人猛交黄| 国产成人无码一区二区在线观看| 中文一区一区三区免费| 欧美性猛交xxxx乱大交91| 三级视频网站在线观看| 亚洲r级在线观看| 欧美精美视频| 欧美大成色www永久网站婷| 久久精品欧洲| 亚洲一二三四区不卡| 免费黄色av片| 欧美国产一二三区| 久久久久久网址| 亚洲综合图片| 免费在线黄色影片| 国产免费一区二区三区四区五区| 亚洲一区二区三区成人在线视频精品| 一区二区三区在线视频看| 国产精品自产拍| 久久精品av麻豆的观看方式| 亚洲永久免费视频| 91视频入口| 销魂美女一区二区| 久久久久久久久久久99| 欧美交换国产一区内射| 国产丝袜护土调教在线视频| 日本在线观看a| 国产91精品在线播放| 精品不卡一区二区| 国产又大又粗又爽的毛片| 国产福利一区二区精品秒拍| 免费网站看电影大片| 91成人免费在线观看| 99免在线观看免费视频高清| 1区2区3区在线| 国产午夜视频在线播放| 小舞被吸乳羞羞网站视频| 最新国产精品久久| 午夜精品三级久久久有码| h在线视频免费观看完整版| 久久久欧美精品sm网站| 日本精品影院| 久久久夜夜夜| 国产剧情av在线| 精品va天堂亚洲国产| 北条麻妃av高潮尖叫在线观看| 亚洲自拍偷拍图| 欧美性理论片在线观看片免费| 亚洲国产视频a| 精品国产一二三四区| 最新国产在线拍揄自揄视频| 在线观看视频免费| 影音先锋日韩av| 久久精品一区二区三| 麻豆精品一区二区av白丝在线| 一二三四社区在线视频6| 国产性猛交╳xxx乱大交| 国产片在线播放| 欧美日韩1234| 国产免费av一区| 无码人妻一区二区三区在线视频| 亚洲精品粉嫩美女一区| 国产精品天天操| 国产成人免费视频精品含羞草妖精| 亚洲精品一区二区三区影院| 国产精品无码无卡无需播放器| 欧美黑人一区| 亚洲电影在线| 国产真人真事毛片| 国产精品一区二区免费福利视频| 国产成人av电影在线观看| 国产一级大片免费看| 亚洲女优在线观看| 欧美成人福利视频| 高潮一区二区| 国产欧美日韩综合一区在线播放| 国产宾馆实践打屁股91| 久草在线在线精品观看| 人妻互换免费中文字幕| 精品动漫3d一区二区三区免费版| 亚洲品质自拍视频| 日本三级在线播放完整版| 亚洲精品ady| 国产黑人绿帽在线第一区| 插菊花综合1| 一级免费a一片| 在线一区二区三区做爰视频网站| 亚洲精品久久久久avwww潮水| 四虎国产精品成人免费影视| 国产欧美一区二区三区鸳鸯浴| 国产一级特黄a大片免费| 风间由美久久久| 久久九九全国免费精品观看| 小h片在线观看| 一二区在线观看| 欧美5-7sexvideos处| 亚洲国产精品精华液网站| 美女福利视频一区二区| 一级片在线播放| 中文字幕日本人妻久久久免费| 欧美亚洲一级二级| 91中文字幕在线视频| 欧美国产日韩在线观看| 成人精品视频99在线观看免费| 亚洲欧美日韩国产中文专区| 一区二区三区久久| 欧美自拍视频| 亚洲成人黄色av| 中日韩美女免费视频网址在线观看| 最新电影电视剧在线观看免费观看| 欧美大片免费观看在线观看网站推荐| 亚洲国产91| 国产精品日日摸夜夜爽| 国产精品色婷婷视频| 欧美三级成人观看| 日本泡妞xxxx免费视频软件| 国产成人精品一区二区三区福利| 国产欧美精品aaaaaa片| 亚洲婷婷久久综合| 成人xxxxx| 在线日本制服中文欧美| 一出一进一爽一粗一大视频| 国产精品蜜臀在线观看| 日日摸夜夜爽人人添| 亚洲第一精品久久忘忧草社区| 成人精品动漫一区二区三区| 男人的天堂久久久| 制服诱惑亚洲| 国内精品国产三级国产在线专| 97国产精品videossex| 日本电影一区二区在线观看| 久久亚洲私人国产精品va| 欧美性xxxxxxxx| 黄色一级片在线观看| 最近中文字幕mv在线一区二区三区四区| 精品国产乱码久久久久久1区2匹| 成人p站proumb入口| 91色中文字幕| 69精品国产久热在线观看| 久久久噜噜噜| 成人免费看片98欧美| 天天插综合网| 九九久久久久久久久激情| 久久中文视频| 在线观看成年人视频| 国产福利在线视频| 一呦二呦三呦国产精品| 三级免费网站| 欧美女优在线视频| 日本中文字幕在线观看视频| 亚洲成人精品| 欧美国产综合在线| 欧美国产亚洲一区| 天天摸夜夜操| 新91视频在线观看| 超碰在线资源站| 青青艹视频在线| 国内精品女同女同一区二区三区| 亚洲尤物在线视频观看| 国产美女诱惑一区二区| 99热成人精品热久久66| 久久99伊人| 久久人人超碰| 风间由美中文字幕在线看视频国产欧美| 一级日本不卡的影视| sm在线观看| www.久久久| 亚洲精品字幕在线| 高清av中文在线字幕观看1| 制服丝袜激情欧洲亚洲| 色影视在线视频资源站| 亚洲一区视频| 日本三级电影在线看| 欧美一区视频在线| 国产做受69高潮| 亚洲日本va午夜在线影院| 久久综合九色欧美狠狠| 久久久久久久亚洲| 中文精品视频一区二区在线观看| sis001亚洲原创区| 亚洲日本欧美| 特黄特黄一级片| 久久久成人精品一区二区三区| 成人国产亚洲欧美成人综合网| 爱情电影社保片一区| 亚洲欧美在线第一页| 精品麻豆一区二区三区| 精品中文字幕在线2019| 日本三级韩国三级欧美三级| 国产一级片久久| 男同互操gay射视频在线看| 国产一区二区小视频| 亚洲男同1069视频| 97色在线观看免费视频| 国产精品小说在线| 欧美日韩亚洲国产成人| 国产午夜精品一区二区| 翔田千里精品久久一区二| 美女黄色网址| 黄色在线视频网| 国产精品麻豆视频| 欧美视频精品一区| 亚州av综合色区无码一区| 日本不卡视频在线观看| 日韩免费影院| 四虎影视成人永久免费观看视频| 一线天自拍视频| 亚洲一区久久久| 国产精选一区| 激情小视频在线| 丝袜国产在线| 日韩精品――中文字幕| 亚洲天堂av一区| 精品国产123| 亚洲亚洲人成综合网络| 性欧美大战久久久久久久久| 日本丶国产丶欧美色综合| 欧美日韩精品免费观看| 国产成人精品视频一区| 欧美激情一级片一区二区| 国产又粗又爽又黄的视频| 欧美日韩国产精品一区二区| 成人av第一页|