亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

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

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

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

2 回答

?
森欄

TA貢獻1810條經驗 獲得超5個贊

我希望有效地擁有一些在所有方面都表現為 int 的東西,但有額外的方法。我希望能夠通過某種方式用它來代替 int。


目前在 Go 中這是不可能的,因為它不支持任何類型的泛型。


您可以實現的最佳效果如下:


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))

}


查看完整回答
反對 回復 2023-07-17
?
暮色呼如

TA貢獻1853條經驗 獲得超9個贊

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


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

}


查看完整回答
反對 回復 2023-07-17
  • 2 回答
  • 0 關注
  • 129 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號