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

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

如何通過擴(kuò)展類型向 int 等基本類型添加功能?

如何通過擴(kuò)展類型向 int 等基本類型添加功能?

Go
守著星空守著你 2023-07-17 15:25:53
我希望能夠向現(xiàn)有類型(例如 int)添加方法:func (i *int) myfunction {   ...}然而,這顯然會(huì)產(chǎn)生錯(cuò)誤。無法在非本地類型上定義新方法谷歌的頂部結(jié)果是一個(gè)針對(duì) golang 的github 問題。有希望的是,答案是您已經(jīng)可以通過其他方式獲得此功能,因此他們不會(huì)對(duì)語言進(jìn)行此更改。無濟(jì)于事的是,回復(fù)含糊不清type extended Existing并且它沒有明確顯示如何實(shí)現(xiàn)OP的要求,即:func (a int) sum(b int) (total int) {    total = a + b    return}那么,如何擴(kuò)展 int 來添加功能呢?還可以像 int 一樣使用嗎?如果是這樣,怎么辦?我希望有效地?fù)碛幸恍┰谒蟹矫娑急憩F(xiàn)為 int 的東西,但有額外的方法。我希望能夠通過某種方式用它來代替 int。
查看完整描述

2 回答

?
森欄

TA貢獻(xiàn)1810條經(jīng)驗(yàn) 獲得超5個(gè)贊

我希望有效地?fù)碛幸恍┰谒蟹矫娑急憩F(xiàn)為 int 的東西,但有額外的方法。我希望能夠通過某種方式用它來代替 int。


目前在 Go 中這是不可能的,因?yàn)樗恢С秩魏晤愋偷姆盒汀?/p>


您可以實(shí)現(xiàn)的最佳效果如下:


package main


type Integer int


func (i Integer) Add(x Integer) Integer {

    return Integer(int(i) + int(x))

}

func AddInt(x, y int) int {

    return x + y

}


func main() {

    x := Integer(1)

    y := Integer(2)

    z := 3


    x.Add(y)

    x.Add(Integer(z))

    x.Add(Integer(9))


    # But this will not compile

    x.Add(3)


    # You can convert back to int

    AddInt(int(x), int(y))

}


查看完整回答
反對(duì) 回復(fù) 2023-07-17
?
暮色呼如

TA貢獻(xiàn)1853條經(jīng)驗(yàn) 獲得超9個(gè)贊

您可以基于 int 聲明一個(gè)新類型,并使用它:


type newint int


func (n newint) f() {}


func intFunc(i int) {}


func main() {

   var i, j newint


    i = 1

    j = 2

    a := i+j  // a is of type newint

    i.f()

    intFunc(int(i)) // You have to convert to int

}


查看完整回答
反對(duì) 回復(fù) 2023-07-17
  • 2 回答
  • 0 關(guān)注
  • 141 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)