Pointer.md
Translated by ChatGTP
指針
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("測試 go")
var user models.User
db.Connection.Where("id = ?", 1).Last(&user)
println(user.Username)
userToBeLastUser(&user)
println(user.Username)
}
// 這個方法不管哪個地方, 都print 不出 id = 2
func userToBeLastUser_v1(user *models.User) {
db.Connection.Where("id = ?", 2).Last(&user)
println("在函數內, 用戶姓名是 " + user.Username)
}
// 這方法, 只能讓 function 內的 function print 出 id = 2
func userToBeLastUser_v2(user *models.User) {
var newUser models.User
db.Connection.Where("id = ?", 2).Last(&newUser)
user = &newUser
println("在函數內, 用戶姓名是 " + user.Username)
}
// 這方法, 可以讓 function 內外都 print 出 id = 2
func userToBeLastUser(user *models.User) {
var newUser models.User
db.Connection.Where("id = ?", 2).Last(&newUser)
*user = newUser
println("在函數內, 用戶姓名是 " + (*user).Username)
}