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
相关推荐
Yeats_Liao21 小时前
时序数据库系列(五):InfluxDB聚合函数与数据分析
java·后端·数据分析·时序数据库
程序员buddha1 天前
C语言数组详解
c语言·开发语言·算法
寻找华年的锦瑟1 天前
Qt-视频播放器
开发语言·qt
又是忙碌的一天1 天前
Java IO流
java·开发语言
fish_study_csdn1 天前
Python内存管理机制
开发语言·python·c python
ghie90901 天前
MATLAB/Simulink水箱水位控制系统实现
开发语言·算法·matlab
你的人类朋友1 天前
✍️记录自己的git分支管理实践
前端·git·后端
cs麦子1 天前
C语言--详解--指针--上
c语言·开发语言
像风一样自由20201 天前
Go语言入门指南-从零开始的奇妙之旅
开发语言·后端·golang
合作小小程序员小小店1 天前
web网页开发,在线考勤管理系统,基于Idea,html,css,vue,java,springboot,mysql
java·前端·vue.js·后端·intellij-idea·springboot