golang独学の道3-構造体
1765 ワード
初期構造体は、これにぼんやりしていた.
私個人の理解では、構造体は、まずそのようなものを定義し、彼のこの構造から対応する構造変数を作成することができます.構造体をデータベースの中の1枚の表にすることができて、構造体はjsのobjectオブジェクトに似ていて、私は気絶して、これは少しjsonのこのような構造に似ています.
そしてpythonのクラスに似ています.しかし、中のフィールドは通常しかサポートされていないようですね.まずコードをつけてからにしよう
定義が終わったら、最初にどう使うか考えてみましょう.変数を定義してnewメソッドで構造をインスタンス化する必要がありますか?
最初はそう思っていましたが、申し訳ありませんが、これは間違った書き方です.後で菜鳥チュートリアルに基づいて、正確な書き方はpythonの中で直接クラスをインスタンス化するのと同じです.
変数bをbooks構造にインスタンス化すると、中のフィールドを変更し、b.authorで構造の著者フィールドを変更できます.
これは普通の使い方でしょう.次に、構造体に配列フィールドを配置できるかどうかを考えて、次の構造体を定義します.
確かに報告は間違っていませんが、インスタンス化するときはだめです.
あとは自分のせいに違いないと気づいて、次のように変えてOKしました.
配列の値を直接書くのは面倒なようですね.pythonには[1,2]と書くだけで、goには少なくとも[]int{1,2}と書かなければなりません.
残念ですが、これは現実的ではないことを知っています.無理に受け入れましょう.
2.構造体も変数であり、他の用法と一致するポインタを関数的に伝達することができる.
3.構造体の重要な操作、内部関数のバインド、pythonの中のクラスのように実現することができます
私個人の理解では、構造体は、まずそのようなものを定義し、彼のこの構造から対応する構造変数を作成することができます.構造体をデータベースの中の1枚の表にすることができて、構造体は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}と書かなければなりません.
残念ですが、これは現実的ではないことを知っています.無理に受け入れましょう.
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())
}