2015-05-23 24 views
-2

我的問題與this有點相關,但不是擴展一個現有的類型,試圖創建自己的類型。我的目標是有這樣的事情,從Java從一個不同的包中訪問一個結構體的方法

JsonClient j = new JsonClient() 
j.setUrl("x.com") 
j.setMethod(GET) 
j.setData("{crap: morecrap}") 
String result = j.send 

但在去我能做的最好的是

config := jsonclient.Config{} 
config.Url = "http://foaas.com/version" 
config.Data = []byte(`{datadatadata}`) 
config.Method = "GET" 

s, err := jsonclient.NewClient(&config) 
checkErr(err) 

response := jsonclient.Dial(s) 

我不希望有一個配置對象只是設置一個jsonclient未來 實例,因爲它只是有意義的,不要打我,jsonclient 類,所以我應該可以做jsonclient.SetUrl等,接縫更多 高效,並會幫助我瞭解幾個關鍵點即時失蹤 在去。

您可以找到jsonclient here

+1

只需改變'NewClient'方法直接接受參數,而不是通過對象傳遞它們。或者,製作客戶端類的所有配置成員成員。 – inf

+0

我如何製作客戶端類的所有配置成員成員? – norwat

+1

你的問題對我來說還不清楚。您是否正在編寫並希望更改'jsonclient'的API,還是您正在使用的第三方軟件包?如果後面的,你不能保證配置值本身不需要在'New'中,所以你不能做很多其他的事情,只需要創建配置,不要存儲;像這樣:https://play.golang.org/p/YJU7Peln3p –

回答

4

您可以致電類型從另一個軟件包提供的方法導出的方法(即,以大寫字母開始)。所以沒有什麼能阻止你將這些方法添加到你的類型中:你只需要命名它們,例如SetUrl而不是setUrl

+0

繼承人我現在有一個片段http://pastebin.com/hWAPVJr1 但在主包我得到'類型jsonclient.Client沒有字段或方法SetUrl)'我試着設置檢索參數值和作爲指針並得到相同的錯誤 – norwat

相關問題