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
相关推荐
LUCIAZZZ16 分钟前
SkyWalking快速入门
java·后端·spring·spring cloud·微服务·springboot·skywalking
EPSDA19 分钟前
Linux线程池
linux·运维·服务器·开发语言·c++
方圆想当图灵32 分钟前
高性能缓存设计:如何解决缓存伪共享问题
后端·代码规范
大胖丫38 分钟前
vue 学习-vite api.js
开发语言·前端·javascript
遇见很ok39 分钟前
js中 ES6 新特性详解
开发语言·javascript·es6
没有晚不了安1 小时前
1.13作业
开发语言·python
布谷歌1 小时前
Oops! 更改field的数据类型,影响到rabbitmq消费了...(有关于Java序列化)
java·开发语言·分布式·rabbitmq·java-rabbitmq
被程序耽误的胡先生1 小时前
java中 kafka简单应用
java·开发语言·kafka
刀客1231 小时前
python小项目编程-中级(1、图像处理)
开发语言·图像处理·python
Long_poem1 小时前
【自学笔记】Spring Boot框架技术基础知识点总览-持续更新
spring boot·笔记·后端