golang 通过指针修改结构体,达到类似引用类型的目的

package main

import (
	"fmt"
	"strconv"
)

type UserInfo struct {
	Id   string //用户编号
	Name string //用户名称
}

func main() {
	//获取所有用户信息
	usrs := GetAllUser()
	//第一次打印
	fmt.Println(usrs[0])
	//遍历用户,批量重新设置姓名
	for _, u := range usrs {
		SetUserName(u)
	}
	//第二次打印
	fmt.Println(usrs[0])
}
func GetAllUser() (usrs []*UserInfo) {
	for i := 1; i < 3; i++ {
		var u UserInfo
		u.Id = strconv.Itoa(i) //设置用户编号
		u.Name = "张三" + u.Id   //设置用户名
		usrs = append(usrs, &u)
	}
	return
}
func SetUserName(u *UserInfo) {
	u.Name = "李四" //重置用户名
}

输出结果

&{1 张三1}
&{1 李四}
posted @ 2020-08-25 17:30  nickchou  阅读(383)  评论(0编辑  收藏  举报