介绍
我看到许多人来自Python背景,与Go挣扎。我遵循的内容,他们编写的代码仅限于编写功能和呼叫它们。他们从不利用设计结构,例如抽象,封装,继承,构图等。我可以理解他们的痛苦,因为我一直在同一条船上。
在今天的帖子中,我将比较我们如何在Python中写课程与如何在旅途中做同样的事情。
什么是组成?
- 变量形式的属性
- 方法的行为
python中的例子
考虑python中的以下代码,该代码定义了具有名称属性和问候方法的简单人类类:
class Person:
def __init__(self, name):
self.name = name
def greet(self):
print(f"Hello, my name is {self.name}")
p = Person("John")
p.greet() # prints "Hello, my name is John"
如果您是一名希望学习GO的Python程序员,您会很高兴知道GO具有与“ structs”类似的概念。结构类似于类,因为它们允许您使用自己的字段和方法定义自定义数据类型。
定义结构和属性的结构
要在GO中定义结构,您使用类型关键字,然后使用结构的名称和一组包含字段的卷发括号。这是一个名为“人:
”的简单结构的示例
type Person struct {
name string
age int
}
这定义了一个称为两个字段的人的结构:姓名和年龄,它们分别为字符串和int。
使用接收器功能的方法或行为
您还可以使用func关键字来定义结构上的方法,并使用(p *person)语法将方法连接到结构,其中p是方法和人的接收者是接收者的类型。这是一个称为Sayhello的方法的示例,该方法向控制台打印问候:
func (p *Person) SayHello() {
fmt.Printf("Hello, my name is %s and I am %d years old\n", p.name, p.age)
}
要创建一个结构的实例,您可以使用新函数或速记语法:=。这是两者的示例:
// Using the new function
p1 := new(Person)
p1.name = "John"
p1.age = 30
// Using the shorthand syntax
p2 := Person{name: "Jane", age: 25}
您还可以定义“构造函数”函数来创建结构的实例。如果您想在创建新实例时执行一些初始化逻辑,这将很有用。以下是人构造的构造函数的示例:
func NewPerson(name string, age int) *Person {
p := new(Person)
p.name = name
p.age = age
return p
}
然后,您可以使用此构造函数来创建像这样的人结构的新实例:
p := NewPerson("Bob", 35)
我希望本教程能帮助您了解如何在GO中定义和使用python程序员。结构是在GO中定义自定义数据类型的强大而灵活的方法,我鼓励您进一步探索它们。
谢谢您的阅读!