Rumah >pembangunan bahagian belakang >Golang >Struktur asas bahasa Go (bab musim panas)
constructor adalah sama seperti dalam bahasa lain. beroperasi. Tetapi dalam Go, ia mungkin tidak sama, dan ia perlu dilengkapkan dengan menggunakan fungsi yang berasingan. Struktur
type Student struct { Name string Age int phone string }
Pembina
func NewStudent(name string, age int, phone string) *Student { return &Student{Name: name, Age: age, phone: phone} } //函数尽量采用固定格式 New结构体名
func main() { var s1 = NewStudent("张三", 18, "1111") fmt.Println(s1) }
Hasil pelaksanaan
Mengapa pembina mengembalikan penunjuk struktur
Secara umumnya, terdapat dua sebab Alasan pertama ialah prestasi menghantar alamat lebih tinggi, dan sebab kedua adalah kerana spesifikasi, dan sebab seterusnya. fungsi terikat pada struktur Selain itu, ia lebih merupakan norma. 不太用纠结说指针怎么怎么看不懂,对于结构体来说,是不是指针,其实用法都一样。 如果你有其他语言的基础,你可能对于类和对象比较熟悉,传统做法中,是将方法写入类中的。 但是在Go中,采用绑定的方式添加方法。 语法 示例:给Student结构体绑定方法。 main代码 执行结果 有没有感觉有点Java和Python的感觉了,上述可是通过结构体的方式调用方法的,这里就和C区分开了。 在Go中,基本就是通过这些操作,模拟出来面向对象的,相比之下,我更习惯Go的方式,更加灵活。 如果说区别,只是将要修改的 要绑定的结构体 前面加一个 代码 执行结果和上述一摸一样。 通常来说,一般使用指针的方式居多。 嗯...不是居多,是基本都是。 代码一 第3行修改了Name 第7行又打印了s1.Name 执行结果 ???结果没修改,what。 代码二 第一行修改为 执行结果 这次可以看到,结果变了,在其他函数修改了Name,影响了整个s1的Name。 Apabila menggunakan fungsi untuk mengikat struktur, cuba integrasikan parameter struktur ke dalam jenis Pertama, kerana spesifikasi, dan kedua, kerana berorientasikan objek sepatutnya seperti ini Mengubah suai sifat sesuatu objek secara teorinya akan mempengaruhi keseluruhan nilai objek. 函数绑定结构体
func (一般用this 要绑定的结构体) 函数名([参数1,参数2...]) [(返回值1,返回值2,...)]{
代码
}
//一般用this,也可以用其他的,this就像形参一样,随便换,用self,用p,用s,都一样的
func (this Student) say() {
fmt.Printf("我是%v,我今年%v岁了,我的手机号是%v\n", this.Name, this.Age, this.phone)
}
func main() {
//调用构造方法
var s1 = NewStudent("张三", 18, "1111")
//调用Student绑定的say方法
s1.say()
}
函数绑定结构体(指针方式)
*
。func (this *Student) say() {
fmt.Printf("我是%v,我今年%v岁了,我的手机号是%v\n", this.Name, this.Age, this.phone)
}
函数绑定结构体(指针方式和普通方式区别)
区别
func (this Student) say1() {
fmt.Printf("我是%v,我今年%v岁了,我的手机号是%v\n", this.Name, this.Age, this.phone)
this.Name = "666"//这里修改了Name为其他值
}
func main() {
//调用构造方法
var s1 = NewStudent("张三", 18, "1111")
//调用Student绑定的say方法
s1.say1()
//打印s1.Name
fmt.Println(s1.Name)
}
func (this *Student) say1() {
fmt.Printf("我是%v,我今年%v岁了,我的手机号是%v\n", this.Name, this.Age, this.phone)
this.Name = "666"//这里修改了Name为其他值
}
*
了func main() {
//调用构造方法
var s1 = NewStudent("张三", 18, "1111")
//调用Student绑定的say方法
s1.say1()
//打印s1.Name
fmt.Println(s1.Name)
}
Kesimpulan
*
sebanyak mungkin.
Atas ialah kandungan terperinci Struktur asas bahasa Go (bab musim panas). Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!