go的语言很是简介和灵活,下面是申明和建立结构体方式: 指针
package main import ( "fmt" "os" ) //定义结构体 type Person struct { //name是名字, string是类型 name string age int } //定义Person方法 func (p Person) getName() string{ return (p).name } //定义Person方法 func (p *Person) getAge() int{ return (p).age } func main (){ //第一种方式建立(申明变量,再经过=赋值) var p Person = Person{"gaojie", 24} fmt.Printf("%p\n", p) fmt.Printf("name=%s, age=%d\n", p.getName(), p.getAge()) //第二种方式建立(:=编译器能够推断类型再赋值, 是一种简写方式) p1 := Person{"gaojie", 24} fmt.Printf("%p\n", p1) fmt.Printf("name=%s, age=%d\n", p1.getName(), p1.getAge()) //第三种方式建立(根据字段赋值) p2 := Person{age:24, name:"Gaojie"} fmt.Printf("%p\n", p2) fmt.Printf("name=%s, age=%d\n", p2.getName(), p2.getAge()) //第四种new建立 p4 := new(Person) p4.age = 24 p4.name = "Gaojie" //p4为对象的指针 fmt.Printf("%p, %p\n", p4, *p4) //好像方法申明须要传递传递指针的(可是实际上好像变量名字和指针不区分) fmt.Printf("name=%s, age=%d\n", p4.getName(), (*p4).getAge()) p5 := new(Person) // 赋值初始化 p5.name, p5.age = "Gaojie", 25 fmt.Printf("name=%s, age=%d\n", p5.getName(), (*p5).getAge()) os.Exit(1); }