Skip to content

Instantly share code, notes, and snippets.

@kybernetyk
Created April 20, 2011 17:11
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save kybernetyk/931991 to your computer and use it in GitHub Desktop.
Save kybernetyk/931991 to your computer and use it in GitHub Desktop.
mgo int64 struct member unpacking
package main
import (
"fmt"
"launchpad.net/mgo"
)
type MyStruct struct {
A int64
B int
C string
}
func main() {
sess, _ := mgo.Mongo("127.0.0.1")
defer sess.Close()
db := sess.DB("mgotest")
col := db.C("structs")
mys := MyStruct{
A: 128,
B: 2048,
C: "test",
}
col.Insert(&mys)
fmt.Printf("inserted: %#v\n", mys)
retr := MyStruct{}
err := col.Find(nil).One(&retr)
if err != nil {
fmt.Printf("error retrieving: %s\n", err.String())
return
}
fmt.Printf("retrieved: %#v\n", retr)
}
/* Program Output:
inserted: main.MyStruct{A:128, B:2048, C:"test"}
error retrieving: reflect: reflect.Set: int64 != int
Mongo console:
> db.structs.find()
{ "_id" : ObjectId("4daf13550fc82231480fbeaf"), "a" : 128, "b" : 2048, "c" : "test" }
*/
@kybernetyk
Copy link
Author

My System: OS X 10.6.6, Go weekly.2011-04-13 8156, mgo r2011.04.19, mongo db version v1.8.0

Program Output:
inserted: main.MyStruct{A:128, B:2048, C:"test"}
error retrieving: reflect: reflect.Set: int64 != int

Mongo console:

db.structs.find()
{ "_id" : ObjectId("4daf13550fc82231480fbeaf"), "a" : 128, "b" : 2048, "c" : "test" }

Note: Changing MyStruct.A's type to int makes the program execute flawlessly.

@kybernetyk
Copy link
Author

problem solved: owner too stupid to install correct go weekly :/

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment