`

golang的结构体

    博客分类:
  • Go
阅读更多
package main

import "fmt"

//golang中结构体实例是独立的,彼此不会相互影响

//自定义类型

type myInt int

//给自定义类型添加方法
func (a myInt) print(){
	fmt.Println("自定义类型的方法")
}

//结构体
type User struct {
	name string
	age int
}
//结构体方法
func (p User) printUser(){
	fmt.Printf("name=%v, age=%v", p.name, p.age)
}

// 无法修改结构体的内容, 因为结构体是值类型的
func (p User) setUser(name string, age int){
	p.name = name
	p.age = age
}

// 指针类型的接收者
func (p *User) setUser1(name string, age int){
	p.name = name
	p.age = age
}

func main() {

	p1 := User{
		name:"lft",
		age: 18,
	}

	p1.printUser()   //name=lft, age=18
	p1.setUser("work", 17)
	p1.printUser()   //name=lft, age=18

	p1.setUser1("work", 17)
	p1.printUser()  //name=work, age=17


	var b myInt
	b=20
	b.print()



}

 

package main

/*
	结构体的字段类型可以是:基本数据类型、也可以是切片、Map、以及结构体

	如果结构体类型是:指针、slice、map,零值默认是nil,需要先make分配内存空间,才能使用

*/
type person struct {
	name string
	age int
	hobby []string
	map1 map[string]string
}

func main() {
	var p person

	p.name ="lft"
	p.age=18
	p.hobby = make([]string, 3, 6)
	p.hobby[0] = "python"
	p.hobby[1]="java"

	p.map1 = make(map[string]string)

	p.map1["address"] = "bj"
	p.map1["phone"]="xxxxx"
}

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics