从Twitter库搜索中获取数据到Go中的结构

ngngng:

如何将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接触并接触开发人员。任何帮助都会很棒。

Opnauticus;

客户端似乎并没有向您返回一小段字符串。您使用的范围语法(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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章