説明
Golangの構造にはコンストラクターがなく、通常、ファクトリパターンを使用してこの問題を解決できます。
導入する
需要を見てください:
package main
type Student struce{
Name string
...
}
ここでのStudentの最初の文字Sは大文字であるため、他のパッケージでStudentのインスタンスを作成する場合は、パッケージをインポートして、Student構造の変数(インスタンス)を直接作成するだけで済みます。しかし、ここに質問があります。最初の文字が小文字の場合はどうすればよいですか?->解決するファクトリモデル。
ファクトリパターンは、パッケージ間でインスタンスを作成します
student.go
package model
type student struct{
Name string
Age int
}
func NewStudent(name string,age int) *student{
return &student{
Name : name,
Age : age,
}
}
test.go
package main
import(
"fmt"
"go_code/OOP/model"
)
func main() {
stu := model.NewStudent("Casey",18)
fmt.Println(*stu)
}
学生構造フィールドの名前がnameに変更された場合、正常にアクセスできますか?
解決策(Javaのgetterおよびsetterに類似)
student.go
package model
type student struct{
name string
Age int
}
func NewStudent(name string,age int) *student{
return &student{
name : name,
Age : age,
}
}
func (this *student) GetName()string{
return this.name
}
test.go
package main
import(
"fmt"
"go_code/OOP/model"
)
func main() {
stu := model.NewStudent("Casey",18)
fmt.Println(stu.GetName())
}
ブロガーのホームページへのリンク:https://blog.csdn.net/weixin_44736475
独創性は簡単ではありません、あなたが
それをサポートできることを願っています。記事があなたに役立つならば、3つのリンクをクリックすることを忘れないでください!❤️❤️❤️