Pointer.md
Pointer
package main
import (
"jd_workout_golang/app/models"
"jd_workout_golang/lib/database"
db "jd_workout_golang/lib/database"
"jd_workout_golang/lib/file"
"jd_workout_golang/lib/redis"
)
func init() {
file.LoadConfigAndEnv()
database.InitDatabase()
redis.InitRedis()
}
func main() {
println("test go")
var user models.User
db.Connection.Where("id = ?", 1).Last(&user)
println(user.Username)
userToBeLastUser(&user)
println(user.Username)
}
// both in/out function, can't print out id = 2
func userToBeLastUser_v1(user *models.User) {
db.Connection.Where("id = ?", 2).Last(&user)
println("in function, user name is " + user.Username)
}
// can only print out id = 2 in function
func userToBeLastUser_v2(user *models.User) {
var newUser models.User
db.Connection.Where("id = ?", 2).Last(&newUser)
user = &newUser
println("in function, user name is " + user.Username)
}
// can print out id = 2 in/out function
func userToBeLastUser(user *models.User) {
var newUser models.User
db.Connection.Where("id = ?", 2).Last(&newUser)
*user = newUser
println("In function, user name is " + (*user).Username)
}