go怎么给*string赋值"你好"?

萌新go。想问个问题:

因为我这个BO_SYS_User很多string字段都是可以nil的,所以都定义为*string类型。

这时候,我想new出这个对象来赋值的话,就会出错,不允许直接用字符串来给*string赋值,

    var info = BO_SYS_User{}
    info.Id = "1"
    info.UserName = "超级管理员"

请问有什么解决方案吗?

阅读 5.7k
3 个回答

没什么好办法。

可以像 protobuf 一样,专门写个函数搞这个: proto.String

// String stores v in a new string value and returns a pointer to it.
func String(v string) *string { return &v }

封装成函数不就好了。

package main

type User struct {
    nickname string
    name     string
    age      int
    birthday *string
}

func createUser(name string, nickname string, age int) User {
    var user = User{}
    user.nickname = nickname
    user.name = name
    user.age = age
    return user
}

func (user *User) setBirthday(birthday string) {
    user.birthday = &birthday
}

func main() {
    var user = createUser("小明", "老王", 24)
    user.setBirthday("2022-9-13")
}

你定义的指针,那就给他传一个指针就好了呀。

type Boy struct {
    name *string
}

func TestName(t *testing.T) {
    var b = Boy{}

    a := "123"
    b.name = &a

    t.Log(a)
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题