Golang 显示类中的数据隐藏
在Golang中,数据隐藏是一种防止外部代码访问或更改类成员的做法。这通过将类的成员指定为私有成员来实现,从而限制对它们的访问或修改仅限于类的方法。这是面向对象编程中的一个关键概念,因为它确保数据的完整性和类的正确运行。
语法
struct
结构体(struct)是Go编程语言中使用的一个复合数据类型,它使您能够将各种类型的相关值组合在一起,例如字段的集合或方法的集合。类似于面向对象语言中的类,结构体可以用于定义新类型。在这些数据结构中经常定义的一些类型的示例是三维空间中的点,用户帐户或时间点。结构体的另一个特点是方法,它们是与特定结构体类型相关联的函数,可用于对结构体中的数据执行操作。
步骤
- 步骤1 - 创建一个main包并声明fmt(格式化包)包
-
步骤2 - 下一步是定义一个名为”MyStruct”的结构体,其属性为”private_data”和”public_data”。
-
步骤3 - 在main函数中创建MyStruct作为实例,并调用其公共方法publicmethod。
-
步骤4 - 从主函数中调用公共方法来执行程序。
示例1
在这个示例中,我们将看到如何使用结构体和方法来展示数据封装。该结构体有两个字段:private_data和public_data,还包含有两个方法:publicmethod和privatemethod。
package main
import "fmt"
type MyStruct struct {
private_data int // private field
public_data int // public field
}
func (m *MyStruct) privatemethod() { //private method
fmt.Println("This is a private method")
fmt.Println("Private data:", m.private_data)
}
func (m *MyStruct) publicmethod() { //public method
fmt.Println("This is a public method")
fmt.Println("Public data:", m.public_data)
m.privatemethod() //call privatemethod to print the data
}
func main() {
myStruct := MyStruct{
private_data: 42, //assigning data to private field
public_data: 27, // assigning data to public field
}
myStruct.publicmethod()
}
输出
This is a public method
Public data: 27
This is a private method
Private data: 42
示例2
在这个示例中,我们将看到如何使用接口在类中实现数据隐藏。
package main
import "fmt"
type MyInterface interface {
publicmethod() //define publicmethod
}
type MyStruct struct {
private_data int //create private data
}
func (m *MyStruct) privatemethod() {
fmt.Println("This is a private method")
fmt.Println("Private data:", m.private_data) //print private data
}
func (m *MyStruct) publicmethod() {
fmt.Println("This is a public method")
m.privatemethod() //call privatemethod to print the data
}
func main() {
myStruct := MyStruct{private_data: 42}
var myInterface MyInterface = &myStruct
myInterface.publicmethod() //call public method
}
输出
This is a public method
This is a private method
Private data: 42
结论
我们执行了展示类中数据隐藏的程序,使用了两个示例。在第一个示例中,我们使用了结构体和方法;在第二个示例中,我们使用了接口、结构体和方法。