萌新go。想问个问题:
因为我这个BO_SYS_User
很多string
字段都是可以nil
的,所以都定义为*string
类型。
这时候,我想new
出这个对象来赋值的话,就会出错,不允许直接用字符串来给*string
赋值,
var info = BO_SYS_User{}
info.Id = "1"
info.UserName = "超级管理员"
请问有什么解决方案吗?
萌新go。想问个问题:
因为我这个BO_SYS_User
很多string
字段都是可以nil
的,所以都定义为*string
类型。
这时候,我想new
出这个对象来赋值的话,就会出错,不允许直接用字符串来给*string
赋值,
var info = BO_SYS_User{}
info.Id = "1"
info.UserName = "超级管理员"
请问有什么解决方案吗?
封装成函数不就好了。
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)
}
7 回答5.3k 阅读
6 回答6.8k 阅读✓ 已解决
4 回答2.3k 阅读
1 回答3.3k 阅读
2 回答2.2k 阅读
1 回答2.1k 阅读
1 回答1.5k 阅读
没什么好办法。
可以像 protobuf 一样,专门写个函数搞这个: proto.String