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

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

是否可以在不使用點表示法的情況下引用導入的類型

是否可以在不使用點表示法的情況下引用導入的類型

Go
慕桂英3389331 2022-09-12 20:55:26
請考慮以下接口定義:package reposimport (  resources "unit/pkg/resources")type IRepo interface {  fetch(int32) (resources.IResource, error)  update(resources.IResource) (resources.IResource, error)  new() resources.IResource  create(resources.IResource) (resources.IResource, error)  delete(int32) error}有沒有辦法“使用”導入的包(在C++命名空間的意義上),這樣我就不需要每次引用其中一種類型(IResource)(TBH - 這可能只是意味著屬于包而不是IResourcereposresources)
查看完整描述

2 回答

?
慕無忌1623718

TA貢獻1744條經驗 獲得超4個贊

您可以在導入聲明的前面加上名稱,以導入其所有標識符:.


package repos


import (

  . "unit/pkg/resources"

)

但是,幾乎從來都不是合適的解決方案。如果將來向包中添加新標識符,它們可能會與包中的現有標識符發生沖突并破壞生成。import .resourcesrepos


此外,包名稱與類型名稱冗余的事實可能表明包或該包中的類型應該具有更好的名稱(有關更多詳細信息,請參閱包名稱博客文章)。


在這種情況下,也許 和 之間的抽象邊界弊大于利。您在這里處理哪些資源?是否可以將該類型移到某個更高級別的包中?resourcesreposResource


最后,我要指出的是,界面似乎非常大,可能不合適。Go 接口(與 Java 接口不同)通常屬于使用接口的 API,而不是提供該接口實現的 API。IRepo


查看完整回答
反對 回復 2022-09-12
?
30秒到達戰場

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

可以使用類型別名。

type IRes = resources.IResource

與類型定義相反,別名只是同一類型的另一個名稱,而不是新的非重復類型。類型定義將不使用 .=


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

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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