go,定义结构体时可以给默认值吗?

比如:

type Person struct {  
  name string = “zhangsan” 
  age int = 20
} 

类似这样的定义方式可以吗?

阅读 76.4k
3 个回答

题主说的默认值是不支持的,不过可通过函数来实现,比如:

package main

import "fmt"

type Person struct {
    Name string
    Age  int
}

func NewDefaultPerson() Person {
    return Person{
        Name: "张三",
        Age:  20,
    }
}

func NewPerson(name string, age int) Person {
    return Person{
        Name: name,
        Age:  age,
    }
}

func main() {
    person1 := NewDefaultPerson()
    person2 := NewPerson("lisi", 30)
    fmt.Println(person1, person2)
}

在线体验

可以定义,但是如果定义就赋初始值每次使用都需要再定义一次,跟临时变量是一样的道理。

package main

import "fmt"

func main() {
    // 定义一个结构体, 之后可以各种赋值操作和实现接口
    type Person struct {
        Name string
        Age  int
    }
    // 基于已有结构体类型Person, 可以派生出很多实际的值
    p1 := Person{
        Name: "李四",
        Age:  18,
    }
    fmt.Println(p1)

    // 结构体定义时就赋初始值, 那么这个结构体只能用一次, 就是你定义的变量person, 之后就不能复用了
    p2 := struct {
        Name string
        Age  int
    }{
        "张三", 20,
    }
    fmt.Println(p2)
}

图片描述

对于楼主这个要求,我觉得你可以在数据库层这这个操作

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