golang自学之路3-结构体

初始结构体,被这个玩意儿搞糊涂了。

我个人的理解,结构体,就是先定义那么一个玩意儿,由他这个结构可以创建出对应的结构变量。可以把结构体想成数据库里面的一张表,结构体类似于js的object对象,我晕,这有点像json这种结构了。

然后又有点像python的类。但是里面的字段好像只支持常规的吧。先上代码再说

type books struct {
	title string
	author string
	sub string
	id int
	price float32
}

定义好了过后,最开始再想怎么用,是不是需要定义个变量,然后用new方法去实例化一个结构?

b := new(books){"Go 语言", "www.runoob.com", "Go 语言教程", 2,1}

最开始这样想的,但是很抱歉,这是错误的写法。后面根据菜鸟教程,正确写法应该跟python里面直接实例化一个类是一样的:

b:=books{"Go 语言", "www.runoob.com", "Go 语言教程", 2,1}
b.author = "name"
fmt.Println(b)

把变量b实例化一个books结构出来,然后就可以修改里面的字段了,用b.author改变结构里的作者字段。

这应该是常规用法吧。后面我想想结构体里面能不能放数组字段,然后定义了一个如下的结构体:

type dict struct {
	key string
	value string
	tmp []int
}

确实没报错,但是实例化的时候却不行了

dc := dict{key:"name",value:"大神",tmp:{5,6}}
fmt.Println(dc)

后面发觉肯定是自己的原因,改成如下就ok了:

dc := dict{key:"name",value:"大神",tmp:[]int{1,2}}
fmt.Println(dc)

看来直接写一个数组的值还是挺麻烦啊,python里面只需要写个[1,2],go里面还必须至少写成[]int{1,2},如果可以直接写{1,2}多好啊

可惜了,我知道这是不太现实的,勉强接受吧

2.结构体也是一个变量,可以函数传参传递它的指针,跟其他用法一致的

3.结构体重要的操作,绑定内部函数,可以实现像python里的类一样

type books struct {
	title string
	author string
	sub string
	id int
	price float32
}

func (f *books) get_title() string{
	return f.title
}

func main(){
b:=books{"Go 语言", "www.runoob.com", "Go 语言教程", 2,1}
fmt.Println(b.get_title())
}

 

你可能感兴趣的:(GO自学之路)