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())
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章