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
相关推荐
kite01211 分钟前
Gin + Zap 日志:构建高性能、结构化的应用日志系统
golang·gin·log·zap
大翻哥哥6 分钟前
Python 2025:AI工程化与智能代理开发实战
开发语言·人工智能·python
会开花的二叉树22 分钟前
彻底搞懂 Linux 基础 IO:从文件操作到缓冲区,打通底层逻辑
linux·服务器·c++·后端
在下雨59925 分钟前
项目讲解1
开发语言·数据结构·c++·算法·单例模式
再努力"亿"点点28 分钟前
Sklearn(机器学习)实战:鸢尾花数据集处理技巧
开发语言·python
lizhongxuan31 分钟前
Spec-Kit 使用指南
后端
会豪1 小时前
工业仿真(simulation)--发生器,吸收器,缓冲区(2)
后端
SamDeepThinking1 小时前
使用Cursor生成【财务对账系统】前后端代码
后端·ai编程·cursor
饭碗的彼岸one1 小时前
C++ 并发编程:异步任务
c语言·开发语言·c++·后端·c·异步
会豪1 小时前
工业仿真(simulation)--仿真引擎,离散事件仿真(1)
后端