如何在Golang中将一个对象放入另一个对象中

huangapple go评论122阅读模式
英文:

How can i put an object in object in golang

问题

我正在尝试的是将从数据库中加载的整个对象加载到一个对象中。

  1. type RatingPK struct {
  2. ratingsPK Rating
  3. }
  4. func (r *RatingPK) Init(rg Rating) {
  5. r.ratingsPK = rg
  6. }
  7. func searchUserRatings(id string)(ratings []Rating) {
  8. rows, err := db.Query("SELECT * FROM ratings WHERE userId = ?", id)
  9. if err != nil {
  10. return
  11. }
  12. for rows.Next() {
  13. rate := Rating{}
  14. err = rows.Scan(&rate.MovieId, &rate.UserId, &rate.RatingId, &rate.Rating, &rate.Timestamp)
  15. if err != nil {
  16. return
  17. }
  18. r := RatingPK{}
  19. r.Init(rate)
  20. ratings = append(ratings, r)
  21. }
  22. defer rows.Close()
  23. return
  24. }

这段代码给我返回了以下结果:

  1. [{
  2. "rating_id": 593,
  3. "userId": 2,
  4. "movieId": 93,
  5. "rating": 3,
  6. "timestamp": "0000-00-00"
  7. },
  8. {
  9. "rating_id": 616,
  10. "userId": 2,
  11. "movieId": 94,
  12. "rating": 3,
  13. "timestamp": "0000-00-00"
  14. }]

现在我想做的是获取数组中的每个对象,并将其放入另一个对象中,期望的结果将是:

  1. [{"ratingsPK": {
  2. "rating_id": 593,
  3. "userId": 2,
  4. "movieId": 93,
  5. "rating": 3,
  6. "timestamp": "0000-00-00"
  7. }},
  8. {"ratingsPK": {
  9. "rating_id": 616,
  10. "userId": 2,
  11. "movieId": 94,
  12. "rating": 3,
  13. "timestamp": "0000-00-00"
  14. }}]

有没有办法实现这个目标?

英文:

What i am trying to do is to load an whole object coming from my database into an object.

  1. type RatingPK struct {
  2. ratingsPK Rating
  3. }
  4. func (r *RatingPK) Init(rg Rating) {
  5. r.ratingsPK = rg
  6. }
  7. func searchUserRatings(id string)(ratings []Rating) {
  8. rows, err := db.Query("SELECT * FROM ratings WHERE userId = ?", id)
  9. if err != nil {
  10. return
  11. }
  12. for rows.Next() {
  13. rate := Rating{}
  14. err = rows.Scan(&rate.MovieId, &rate.UserId, &rate.RatingId, &rate.Rating, &rate.Timestamp)
  15. if err != nil {
  16. return
  17. }
  18. r := RatingPK{}
  19. r.Init(rate)
  20. ratings = append(ratings, r)
  21. }
  22. defer rows.Close()
  23. return
  24. }

this code gives me this result:

  1. [{
  2. "rating_id": 593,
  3. "userId": 2,
  4. "movieId": 93,
  5. "rating": 3,
  6. "timestamp": "0000-00-00"
  7. },
  8. {
  9. "rating_id": 616,
  10. "userId": 2,
  11. "movieId": 94,
  12. "rating": 3,
  13. "timestamp": "0000-00-00"
  14. }]

Now what i want to do is to get each object of the array and put in to another object and the desired result will be this:

  1. [{"ratingsPK": {
  2. "rating_id": 593,
  3. "userId": 2,
  4. "movieId": 93,
  5. "rating": 3,
  6. "timestamp": "0000-00-00"
  7. }},
  8. {"ratingsPK": {
  9. "rating_id": 616,
  10. "userId": 2,
  11. "movieId": 94,
  12. "rating": 3,
  13. "timestamp": "0000-00-00"
  14. }}]

Is there any way to achieve that?

答案1

得分: 0

你可以循环并按以下方式执行:

  1. type RatingPK struct {
  2. ratingsPK Rating
  3. }
  4. func (r *RatingPK) Init(rg Rating) {
  5. r.ratingsPK = rg
  6. }
  7. func searchUserRatings(id string) (ratings []RatingPK) {
  8. rows, err := db.Query("SELECT * FROM ratings WHERE userId = ?", id)
  9. if err != nil {
  10. return
  11. }
  12. var myarray []string
  13. for rows.Next() {
  14. rate := Rating{}
  15. err = rows.Scan(&rate.MovieId, &rate.UserId, &rate.RatingId, &rate.Rating, &rate.Timestamp)
  16. if err != nil {
  17. return
  18. }
  19. r := RatingPK{}
  20. r.Init(rate)
  21. ratings = append(ratings, r)
  22. }
  23. defer rows.Close()
  24. return
  25. }
英文:

You may loop and do as follows

  1. type RatingPK struct {
  2. ratingsPK Rating
  3. }
  4. func (r *RatingPK) Init(rg Rating) {
  5. r.ratingsPK = rg
  6. }
  7. func searchUserRatings(id string) (ratings []RatingPK) {
  8. rows, err := db.Query("SELECT * FROM ratings WHERE userId = ?", id)
  9. if err != nil {
  10. return
  11. }
  12. var myarray []string
  13. for rows.Next() {
  14. rate := Rating{}
  15. err = rows.Scan(&rate.MovieId, &rate.UserId, &rate.RatingId, &rate.Rating, &rate.Timestamp)
  16. if err != nil {
  17. return
  18. }
  19. r := RatingPK{}
  20. r.Init(rate)
  21. ratings = append(ratings, r)
  22. }
  23. defer rows.Close()
  24. return
  25. }

答案2

得分: 0

以下是一个简短的示例,将帮助您了解如何使用嵌套结构体 如何在Golang中将一个对象放入另一个对象中

  1. package main
  2. import (
  3. "fmt"
  4. )
  5. type nameType struct {
  6. firstName string
  7. lastName string
  8. }
  9. type student struct {
  10. name nameType
  11. age int
  12. }
  13. func main() {
  14. bob := student{nameType{"bob", "dope"}, 18}
  15. fmt.Println(bob.name.firstName)
  16. }

您可以在此处进行测试 如何在Golang中将一个对象放入另一个对象中

https://play.golang.org/p/ft9PGrlrrx

英文:

Here's a short example that will help you understand how to use nested structs 如何在Golang中将一个对象放入另一个对象中

  1. package main
  2. import (
  3. "fmt"
  4. )
  5. type nameType struct {
  6. firstName string
  7. lastName string
  8. }
  9. type student struct {
  10. name nameType
  11. age int
  12. }
  13. func main() {
  14. bob := student{nameType{"bob", "dope"}, 18}
  15. fmt.Println(bob.name.firstName)
  16. }

You can test it up here 如何在Golang中将一个对象放入另一个对象中

https://play.golang.org/p/ft9PGrlrrx

huangapple
  • 本文由 发表于 2017年2月5日 01:18:53
  • 转载请务必保留本文链接:https://go.coder-hub.com/42043219.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定