Golang中的public,private

逃离我推掉我的手 2022-05-25 08:49 294阅读 0赞

Go语言没有像其它语言一样有public、protected、private等访问控制修饰符,它是通过字母大小写来控制可见性的,如果定义的常量、变量、类型、接口、结构、函数等的名称是大写字母开头表示能被其它包访问或调用(相当于public),非大写开头就只能在包内使用(相当于private,变量或常量也可以下划线开头)
注意这个访问权限的规则是跨包,包内都是”共有”的

code public

test/main.go

  1. package main
  2. import (
  3. "test/visible"
  4. )
  5. func main() {
  6. ps := &visibility.PrivateStruct{}
  7. ps.Value = 2000
  8. ps.ShowValue()
  9. }

test/visible/visible.go

  1. package visibility
  2. import "fmt"
  3. type PrivateStruct struct {
  4. Value int
  5. }
  6. func (this *PrivateStruct) ShowValue() {
  7. fmt.Println(this.Value)
  8. }

code private

把函数改成小写,运行会出错

  1. package visibility
  2. import "fmt"
  3. type PrivateStruct struct {
  4. Value int
  5. }
  6. func (this *PrivateStruct) showValue() {
  7. fmt.Println(this.Value)
  8. }

这里写图片描述

发表评论

表情:
评论列表 (有 0 条评论,294人围观)

还没有评论,来说两句吧...

相关阅读

    相关 golangdefer详解

        Go的defer语句用来调度一个函数调用(被延期的函数),使其在执行defer的函数即将返回之前才被运行,被延期执行的函数,它的参数(包括接受者)实在defer执行的时

    相关 Golang 字符串

    Golang 中的字符串 (首发于[我的Gitub][Gitub]) 字符串对于一篇博客文章来说似乎太简单了,但是要想很好地使用它们,不仅需要了解它们是如何工作的,而且还需要