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

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

在Golang中初始化一個新類(Convert Java to Golang)

在Golang中初始化一個新類(Convert Java to Golang)

Go
元芳怎么了 2023-06-12 17:02:50
我正在嘗試將此 java 轉換為 golang,現在我遇到了這個錯誤。我不知道為什么會出現這個錯誤。這是java代碼:ArrayList<Cell> path; // path does not repeat first cellString name;static int count = 0;public Path() {  this.path = new ArrayList<>();  this.name = "P" + (++this.count);}public Path(Path op) {  this.path = new ArrayList<>();  this.name = op.name;  path.addAll((op.path));}這是我寫的type Path struct {    name  string    count int    path  []Cell}func NewPath() (p *Path) {    p = new(Path)    p.path = []Cell{}    p.count = 0    p.name = "P" + strconv.Itoa(1+p.count)    return}func NewPath(op Path) (p *Path) {    p = new(Path)    p.path = []Cell{}    p.count = 0    p.name = op.name    p.path = append(p.path, op.path)    return}go 系統說我在重新聲明 NewPath 方面是錯誤的,錯誤是:prog.go:21:6: NewPath redeclared in this block我該如何調試它?
查看完整描述

2 回答

?
慕尼黑的夜晚無繁華

TA貢獻1864條經驗 獲得超6個贊

Golang 不支持重載方法名。

您只需調用(其中一個)不同的方法。


查看完整回答
反對 回復 2023-06-12
?
aluckdog

TA貢獻1847條經驗 獲得超7個贊

這段代碼中有幾個問題,但第一個,也是你指出的那個,是函數NewPath在這里定義了兩次,Go 會因此拋出錯誤。Go 不支持方法重載,因此解決此問題的最簡單方法是將第二個函數重命名為其他名稱。

您將遇到的下一個錯誤是,它發生在第二個函數的cannot use op.path (type []Cell) as type Cell in append行中。發生這種情況是因為您試圖將(type )放入(type ),因此由于不是類型,因此無法附加到. 請注意,這與連接不同,相反,它采用從第二個開始的所有參數并將它們放在第一個參數中。要解決此問題,您可以使用運算符解壓。這將使 的每個參數成為一個單獨的參數,并且每個元素都將被放置在 中。p.path = append(p.path, op.path)NewPathop.path[]Cellp.path[]Cellop.pathCellp.pathappendop.pathappend...op.pathappendp.path

這是您的代碼的重構版本:

func NewPath() (p *Path) { // no changes

    p = new(Path)

    p.path = []Cell{}

    p.count = 0

    p.name = "P" + strconv.Itoa(1+p.count)

    return

}


func NewPathFromOriginal(op Path) (p *Path) { // renamed

    p = new(Path)

    p.path = []Cell{}

    p.count = 0

    p.name = op.name

    p.path = append(p.path, op.path...) // note the '...'

    return

}


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

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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