1.go的结构体没有构造函数,但是可以自己实现一个。由于值拷贝的开销比较大,所以返回的是结构体指针类型
package main
import "fmt"
type person struct {
name, city string
age int
}
func newPerson(name, city string, age int) *person {
return &person{
name: name,
city: city,
age: age,
}
}
func main() {
p1 := newPerson("sss", "sss", 123)
fmt.Println(p1.age)
}
2.go语言中的方法与函数的区别是函数不属于任何类型,但是方法属于特定的类型。
3.想要修改结构体内某个成员变量的值,必须传递结构体指针作为接收者,反之,如果使用值类型的接收者,那么无法改变原始的值。
// SetAge 设置p的年龄
// 使用指针接收者
func (p *Person) SetAge(newAge int8) {
p.age = newAge
}
p1.SetAge(30)
调用该方法:
func main() {
p1 := NewPerson("测试", 25)
fmt.Println(p1.age) // 25
fmt.Println(p1.age) // 30
}
4.结构体支持匿名字段
//Person 结构体Person类型
type Person struct {
string
int
}
func main() {
p1 := Person{
"pprof.cn",
18,
}
fmt.Printf("%#v\n", p1) //main.Person{string:"pprof.cn", int:18}
fmt.Println(p1.string, p1.int) //pprof.cn 18
}
标签:p1,语言,int,age,day2,Person,Go,fmt,string
From: https://www.cnblogs.com/kyszdsmz/p/17032556.html