如何将Twitter搜索的输出附加到SearchTwitterOutput {}结构中的字段Data。
谢谢!
我正在使用Twitter库基于查询输入搜索Twitter。搜索返回一个字符串数组(我相信),我能够fmt.println数据,但是我需要数据作为结构。
type SearchTwitterOutput struct {
Data string
}
func (SearchTwitter) execute(input SearchTwitterInput) (*SearchTwitterOutput, error) {
credentials := Credentials{
AccessToken: input.AccessToken,
AccessTokenSecret: input.AccessTokenSecret,
ConsumerKey: input.ConsumerKey,
ConsumerSecret: input.ConsumerSecret,
}
client, err := GetUserClient(&credentials)
if err != nil {
return nil, err
}
// search through the tweet and returns a
search, _ , err := client.Search.Tweets(&twitter.SearchTweetParams{
Query: input.Text,
})
if err != nil {
println("PANIC")
panic(err.Error())
return &SearchTwitterOutput{}, err
}
for k, v := range search.Statuses {
fmt.Printf("Tweet %d - %s\n", k, v.Text)
}
return &SearchTwitterOutput{
Data: "test", //data is a string for now it can be anything
}, nil
}
//Data field is a string type for now it can be anything
//I use "test" as a placeholder, bc IDK...
Result from fmt.Printf("Tweet %d - %s\n", k, v.Text):
Tweet 0 - You know I had to do it to them! @JennaJulien @Jenna_Marbles @juliensolomita @notjulen Got my first hydroflask ever…
Tweet 1 - RT @brenna_hinshaw: I was in J2 today and watched someone fill their hydroflask with vanilla soft serve... what starts here changes the wor…
Tweet 2 - I miss my hydroflask :(
这是我第二周与go接触并接触开发人员。任何帮助都会很棒。
客户端似乎并没有向您返回一小段字符串。您使用的范围语法(for k, v := range search.Statuses
)每次迭代都会返回两个值,即切片中的索引(在这种情况下k
)和切片中的对象(在这种情况下v
)。我不知道-的类型,search.Statuses
但是我知道字符串没有.Text
字段或方法,这就是您v
当前正在打印的方式。
对你的问题:
是否有任何特定原因仅返回具有Data
字段的单个结构,而不是直接返回twitter客户端的输出?
您的函数签名可能看起来像这样:
func (SearchTwitter) execute(input SearchTwitterInput) ([]<client response struct>, error)
然后,无论在何处调用此函数,都可以对那些对象中的文本进行操作。
如果您不愿意将数据放置在自己的结构中,则可以返回其中的一部分([]*SearchTwitterOutput
),在这种情况下,您可以SearchTwitterOutput
在for循环中构建一个单据,当前正在其中打印推文并将其附加到输出列表。可能看起来像这样:
var output []*SearchTwitterOutput
for k, v := range search.Statuses {
fmt.Printf("Tweet %d - %s\n", k, v.Text)
output = append(output, &SearchTwitterOutput{
Data: v.Text,
})
}
return output, nil
但是,如果您的目标确实是返回所有串联在一起并放在单个结构中的结果,则建议您构建一个字符串切片(包含所需的文本),然后将其与您选择的定界符连接起来。然后,您可以将单个输出字符串放在返回对象中,该对象看起来可能像这样:
var outputStrings []string
for k, v := range search.Statuses {
fmt.Printf("Tweet %d - %s\n", k, v.Text)
outputStrings = append(outputStrings, v.Text)
}
output = strings.Join(outputStrings, ",")
return &SearchTwitterOutput{
Data: output,
}, nil
尽管我会警告,但是找到一个永远不会出现在推文中的定界符可能很棘手。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句