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
相关推荐
xiaobin889992 分钟前
matlab官方免费下载安装超详细教程2025最新matlab安装教程(MATLAB R2024b)
java·开发语言·其他·matlab
Takoony6 分钟前
正则表达式r前缀使用指南
开发语言·正则表达式·r语言
搏博12 分钟前
WPS中代码段的识别方法及JS宏实现
开发语言·javascript·wps
vortex517 分钟前
Bash fork 炸弹 —— :(){ :|:& };:
运维·服务器·开发语言·网络安全·bash
Pacify_The_North34 分钟前
【进程控制二】进程替换和bash解释器
linux·c语言·开发语言·算法·ubuntu·centos·bash
xiaohanbao091 小时前
day29 python深入探索类装饰器
开发语言·python·学习·机器学习·pandas
wuqingshun3141591 小时前
经典算法 (A/B) mod C
c语言·开发语言·c++·算法·蓝桥杯
半青年1 小时前
Qt图表库推荐指南与分析
c语言·开发语言·javascript·c++·qt·信息可视化
Code哈哈笑1 小时前
【图书管理系统】用户注册系统实现详解
数据库·spring boot·后端·mybatis
用手手打人1 小时前
SpringBoot(一)--- Maven基础
spring boot·后端·maven