Golang中私有变量的使用

在Go语言中,如果结构体中的变量是私有的(即小写字母开头),那么它们只能通过结构体的实例进行访问和修改。如果你想给结构体赋值,你需要先创建一个结构体的实例,然后通过该实例来访问和修改结构体的私有变量

示例代码:

复制代码
package main

import (
	"fmt"
)

// BaseFilter结构体定义了3个私有变量
type BaseFilter struct {
	bodyRaw interface{}
	query   string
	logID   string
}

// ANNFilter结构体定义了1个公有变量
type ANNFilter struct {
	BaseFilter
}

// 创建实例
func NewANNFilter() *ANNFilter {
	return &ANNFilter{
		BaseFilter: BaseFilter{},
	}
}

func (bf *BaseFilter) ParseRequest(name string) error {
	// 通过实例方法设置私有变量的值
	bf.query = "hello world"
	fmt.Println(name)
	fmt.Println(bf.query)
	return nil
}

func (anf *ANNFilter) Process() error {
	// ANNFilter可以使用它公有变量的共有方法
	anf.ParseRequest("ANNFilter")
	return nil
}

func main() {
	anf := NewANNFilter()
	anf.Process()
	anf.ParseRequest("BaseFilter")
}

输出结果

复制代码
[work@aaa xxx]$ go run test.go
/home/work/.deck/1.0/go/1.21/bin/go run test.go
ANNFilter
hello world
BaseFilter
hello world
相关推荐
Never_Satisfied1 小时前
在JavaScript / Node.js / 抖音小游戏中,使用tt.request通信
开发语言·javascript·node.js
爱吃小胖橘1 小时前
Unity资源加载模块全解析
开发语言·unity·c#·游戏引擎
你的人类朋友2 小时前
设计模式有哪几类?
前端·后端·设计模式
Yeats_Liao2 小时前
Go Web 编程快速入门 10 - 数据库集成与ORM:连接池、查询优化与事务管理
前端·数据库·后端·golang
千里镜宵烛3 小时前
Lua-迭代器
开发语言·junit·lua
渡我白衣3 小时前
C++ 同名全局变量:当符号在链接器中“相遇”
开发语言·c++·人工智能·深度学习·microsoft·语言模型·人机交互
淮北4943 小时前
html + css +js
开发语言·前端·javascript·css·html
你的人类朋友3 小时前
适配器模式:适配就完事了bro!
前端·后端·设计模式
间彧4 小时前
SpringBoot集成RocketMQ事务消息
后端