Go语言学习笔记 --- 关键字、注释、结构、包相关和可见性规则

Go语言导出机制:首字母规则与包可见性本质 在Go语言中,'私有/公有'并非传统OOP的访问控制概念,而是由编译期决定的导出(exported)与未导出(unexported)机制——其唯一判定标准是标识符首字母是否为Unicode大写字母。该规则作用于函数、变量、结构体字段、方法乃至嵌套类型,构成Go模块系统最底层的封装契约。它不依赖运行时反射、IDE智能提示或作用域嵌套,而是在词法分析阶段即固化符号可见性,从而保障API稳定性、构建确定性和工具链可预测性。理解这一机制,是掌握Go包设计、避免跨包引用错误、规范internal目录使用及编写可维护A 阅读详情

学习笔记根据 无闻 go语言基础教程 整理

Go 内置关键字 (25个均为小写)

breakdefaultfuncinterfaceselect
casedefergomapstruct
chanelsegotopackageswitch
constfallthroughifrangetype
continueforimportreturnvar

Go 的注释方法

  • // : 单行注释
  • /**/ : 多行注释

Go 程序的一般结构

  • 通过package来组织结构
  • 只有package名称为main的包可以包含main函数
  • 一个可执行程序有且只有一个main函数
  • 通过import关键字来导入其他非main包
  • 通过const关键字来进行常量的定义
  • 通过在函数体外部使用var关键字来进行全局变量的声明与赋值
  • 通过type关键字来进行结构(struct)或(interface)的声明
  • 通过func关键字来进行函数的声明

导入package的方式和注意事项

  • 逐个导入:

    import "fmt"
    import "os"
    import "time"
    
  • 统一导入:

    import (
       "fmt"
       "os"
       "time"
    )
    
  • 导入包之后,就可以使用格式. 来对包中的函数进行调用

  • 注意: 如果导入了包未被调用,则其中的函数或类型将会报出编译错误

package 别名的使用

  • 当导入第三方包时,包名很可能非常接近或相同,需要使用别名来进行区别和调用如:

     import std "fmt"
     func main() {
       std.Println("HelloWorld!");
     }
    
  • 省略调用如:

    import . "fmt"
    func main() {
       Println("HelloWorld!");
    }
    

省略调用的注意事项:不可与别名同时使用且不建议在实际项目中采用

可见性规则

  • 在Go语言中通过大小写来决定该变量、常量、类型、接口、结构或函数是否可被外部所调用
  • 根据约定,函数名首字母小写即为private, 大写即为public
Go包可见性本质:导出与未导出的编译期规则 在Go语言中,标识符的可见性并非面向对象语境下的‘私有/公有’访问控制,而是一套编译期强制执行的符号导出机制——首字母大小写决定是否能被其他包通过包名引用。该机制直接影响API稳定性、模块封装边界与依赖隔离,是理解Go模块化设计、internal目录约束、vendor行为及go mod版本管理的基础。它不依赖运行时检查,而是在词法分析阶段即剔除未导出符号,从而保障构建确定性与文档自洽性。掌握exported/unexported规则,是写出可维护、可演进、符合云原生工程规范的Go代码的前提。 阅读详情

相关推荐

【网络安全 | 开发】全网最详细Go笔记(3w字总结)

Go语言中的每个文件都属于一个包(package)。包声明用于定义当前文件所属的包名,不同的包之间可以通过包名进行引用和调用。包的声明必须是在源文件中非注释的第一行,且每一个Go程序都包含一个名为main的包。

等风来 1万+

总结:Go笔记 - 入门

一、 Go的基本类型 bool string int、int8、int16、int32、int64 uint、uint8、uint16、uint32、uint64、uintptr byte // uint8 的别名 rune // int32 的别名 代表一个 Unicode 码 float32、float64 complex64、complex128 二、变量 1、初始值 当一个变量被声明之后,系统自动赋予它该类型的零值:int 为 0,float 为 0.0,bool 为 fals.

w2009211777的专栏 818

(南京观海微电子)——GH700X调试指南--SPI 接口+LVDS-测试盒使用方法

1表示OTP完成后,读取烧录值是否一致来判断是否烧录成功,2表示同时检测VCOM是否一致以及烧录次数是否增加,3表示不做任何检测,由用于自行在程序中判断。[格式]:SetFindVcomEn (<开启或关闭>),ON表示开启VCOM搜寻,默认是开启的,只要使能OTP烧录,按OTP按键则进行VCOM查询;[功能]:OTP完成检测类别,用于设置OTP完成后检测OTP次数还是OTP值来判断OTP是否成功。[功能]:用于设置VCOM查询使能,比如需要烧全代码而不需要对VCOM查询时,可以禁止VCOM查询。

m0_75095200的博客 1668

go学习笔记

1.go数据类型 2.声明变量 var 声明可以不加类型但是必须初始化,不初始化就要声明变量类型; :=的用法: 3.常量 常量中的数据类型只可以是布尔型、数字型(整数型、浮点型和复数)和字符串型。 const identifier [type] = value 你可以省略类型说明符 [type],因为编译器可以根据变量的值来推断其类型。 显式类型定义: const b string = “abc” 隐式类型定义: const b = “abc” 常量的枚举: const ( Unknown = 0

weixin_42765975的博客 348

fluent二维叶型仿真_Fluent案例4【自然对流】

自然对流来了!!江苏的高校好多开学了,我啥时候才能开学另外,刚才看了何同学的Mac Pro深度体验视频,我好酸/(ㄒoㄒ)/~~好想拥有一台跑仿真那种sou~sou~sou~的机器。废话不多说了,进入正题!案例题目:一个矩形空腔内有500K恒温小球,矩形空腔充斥空气,边界条件绝热,模型尺寸如下,试模拟空腔内空气流动状态做出温度变化图。(尺寸大小懒得写了,在建模部分里有)操作平台:workbench...

weixin_39724469的博客 3670

VESTA-LAMMPS-OVITO实战:分子动力学模拟中的弗伦克尔缺陷与位错环分析

分子动力学模拟是研究材料辐照损伤的重要工具,级联碰撞后产生的弗伦克尔缺陷和位错环直接影响材料性能。要准确识别这些缺陷,需要从晶体结构建模、模拟计算到可视化分析的全流程配合。VESTA作为晶体结构建模工具,能够构建完美的初始晶格;LAMMPS负责执行分子动力学计算,输出包含缺陷信息的轨迹;OVITO则通过Wigner-Seitz分析和位错提取算法(DXA)定量识别空位、间隙原子及位错环。理解这些工具的原理与参数设置,能有效提升缺陷分析的准确性和效率。本文面向材料模拟与计算科学领域的研究人员,系统梳理了从VES

weixin_29758911的博客 283

【笔记】Go语言学习笔记

Go语言学习笔记

weixin_55970480的博客 1543

方差迭代计算公式

方差迭代计算过程推导术语约定递推公式过程推导 术语约定 (1)En=1n∑i=1nxi E_n =\frac{1}{n} \sum_{i=1}^{n}x_i \tag{1} En​=n1​i=1∑n​xi​(1) (2)F(n)=∑i=1n(x2−En) F(n) = \sum_{i=1}^{n}{(x^2-E_n)} \tag{2} F(n)=i=1∑n​(x2−En​)(2) (3)V(n)...

weixin_44479136的博客 7921

GO语言学习笔记——详细版

GO语音个人学习笔记——详细版

qq_41201689的博客 1433

SAP Fiori Launchpad 上看不到任何 tile 应该怎么办?

中心UI组件是一个框架,为所有SAPFiori应用程序提供公共基础设施SAPFiorilaunchpad是所有SAPFioriUI的基础,并为SAPFiori应用程序提供基本功能,如登录,界面大小,应用程序之间的导航,和基于角色的应用程序目录。ABAP前端服务器包含所有基础设施组件,用于为客户端生成SAPFiori应用程序特定的UI,并与SAPBusinessSuite后端系统通信。SAPFiori应用程序的处理过程如下首先,客户端加载SAPFiori应用程序的界面。...

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 946

SCI一区论文投稿终极技巧:Expert Systems With Applications;Knowledge-Based Systems

投稿计算机1区论文(如KBS、ESWA)的核心技巧包括:1)关键词选择需平衡范围与相关性,避免过细或过泛;2)研究内容聚焦单一核心创新点,避免内容分散;3)必须设计消融实验量化创新点的贡献;4)公开实验代码和数据集,确保可验证性;5)合理使用AI工具仅辅助写作,核心内容需自主完成;6)实验数据必须真实可靠。特别强调1区期刊对创新性和实验严谨性的高要求,需避免常见拒稿原因如内容分散、缺乏验证等。这些策略可提高投稿成功率,但前提是研究本身具有实质性创新。

ZhangJiqun&191cm&85kg 1160

【Golang】欲入此Go先看Go的基本语法

✨ 本文讲述了Go语言入门的基本语法,并且分享了该系列的相关代码案例。

当下的快乐永远最简单! 2210

SpringBoot项目搭建

SpringBoot项目搭建

私信可回答各种问题~ 1030

Go语言入门|包、关键字和标识符

Go语言是一种静态类型、编译型和并发型的编程语言,由Google开发。Go的源代码文件以.go为扩展名,文件名通常与包名保持一致。一个Go文件可以包含多个顶级声明,但通常最好只包含一个包的声明。文件名应该反映包名或者该文件所包含的主要类型或函数。

汉阳Hann's Home 1504

第4章-上下文管理-对话历史记忆系统与窗口优化-《Agentic AI 智能体应用开发》

当上下文窗口接近极限时,需要对已有内容进行压缩。压缩不是简单的截断——你需要保留核心语义,去除冗余。# Python: 对话摘要压缩# 使用 Haiku 做摘要任务,成本最低"""将一段对话历史压缩为摘要"""system="你是一个对话摘要专家。请生成简洁但有信息量的摘要。",f"'用户'

AI天才研究院 251

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

Go学习笔记(5)Go编程基础

文章目录写在前面Go标识符Go关键字Go注释方法Go大括号使用规则Go程序一般结构Go的package(包)导入用法可见性规则 写在前面      本文主要介绍关于Go语言编程的一些基础知识,包括Go编程的一些规则、格式、标识符、关键字、包导入、一般结构等内容。 Go标识符     在Go中,几乎所有的东西(变量、常量、函数…)都会有一个标识符,关于Go中标识符的命名规则,要注意以下几点: 区分大小写 有效的标识符必须以字母(可以适用任何UTF-8编码的字符)或者下划线开头 以下是无效的标识符 1ab(

D调的第七章博客 1011

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

Go基本代码结构

程序的基本调用单元是包而非单个.go文件,每个包对应一个独立的目录,目录内的所有.go源文件共享作用域:变量、常量、函数及其他类型在包内自动可见,无需显式导入。它可以像其他标识符那样用于变量的声明或赋值(任何类型都可以赋值给它),但任何赋给这个标识符的值都将被抛弃,因此这些值不能在后续的代码中使用,也不可以使用这个标识符作为变量对其它变量进行赋值或运算。​ 语句前的块注释被视为包文档,应简要介绍包的功能和相关信息,如一个包可分散在多个文件中,只需在一个文件中添加包注释即可。比如,常见的局部变量命名可能是。

m0_65829640的博客 1833

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

Go 基础(二)关键字和代码注释

Go 注释 单行注释 // :单行注释 多行注释 /* 多行注释 */ Go 内置关键字(25个均为小写) break、default、func、interface、select、case、defer、go、map、struct、chan、else、goto package、switch、const、fallthrough、if、range、type、continue、for、imp...

qq_38627344的博客 472

golang编程01-go文件基本结构

本篇为golang学习第一篇,讲解了golang文件的基本结构,包括入口文件和标识符基本注意事项。

lmryBC49的博客 1050

包的概念、导入与可见性---Go

包的概念、导入与可见性 包是结构化代码的一种方式:每个程序都由包(通常简称为 pkg)的概念组成,可以使用自身的包或者从其它包中导入内容。 如同其它一些编程语言中的类库或命名空间的概念,每个 Go 文件都属于且仅属于一个包。一个包可以由许多以 .go 为扩展名的源文件组成,因此文件名和包名一般来说都是不相同的。 你必须在源文件中非注释的第一行指明这个文件属于哪个包,如:package main。p...

qimengxingyuan的博客 423

Go-Golang学习总结笔记

资源 某hub会审核不通过,自己去找吧 书籍 网站 基础 go官方中文网 菜鸟教程 C语言网 go语言中文网 golang系列 视频 基础 安装 依赖管理 数据类型 变量和常量 流程控制 函数 包 面向对象编程 提高 ...

关注网络安全、云原生安全 2万+

Go入门指南-4.2Go 程序的基本结构和要素

示例 4.1 hello_world.go 4.2.1 包的概念、导入与可见性 包是结构化代码的一种方式:每个程序都由包(通常简称为 pkg)的概念组成,可以使用自身的包或者从其它包中导入内容。如同其它一些编程语言中的类库或命名空间的概念,每个 Go 文件都属于且仅属于一个包。一个包可以由许多以 为扩展名的源文件组成,因此文件名和包名一般来说都是不相同的。你必须在源文件中非注释的第一行指明这个文件属于哪个包,如:。表示一个可独立执行的程序,每个 Go 应用程序都包含一个名为 的包。一个应用程序可以包含不

qq_45030264的博客 505

Go 语言注释规范

本文介绍了Go语言的注释规范,包括包注释、文件注释、结构体/接口注释、函数/方法注释以及代码逻辑注释的具体要求。包注释需简洁说明核心功能;文件注释需包含标题、描述和变更记录;结构体注释需说明设计目的和成员变量用途;函数注释需详细描述功能、参数和返回值。文章还推荐使用Goland编辑器的模板和Goanno插件来自动生成标准化注释,提高开发效率并确保团队协作的一致性。注释规范的统一有助于代码维护和知识传承。

大河之犬的博客 1849

Go语言学习笔记——(二)注释

Go语言注释及代码风格

weixin_43592586的博客 762

Go语言学习笔记(3):Go语言编码规范

阿斯蒂芬

CrownP的博客 977

Go语言的基础规则

GO语言基础规则1.可见性规则2.命名规范以及语法惯例3.注释4.包的概念5.包的导入6.标准包:7.包的初始化8.项目目录9. Go程序的编译10.字符串介绍字符串拼接有关string处理11.数组(Array)12.切片(slice)切片重组(reslice)陈旧的切片(Stale Slices)13.字典(Map)14.流程控制Switch 语句Select控制For循环for-range 结构15.错误类型PanicRecover:从 panic 中恢复有关于defer16.函数介绍函数调用内置函数

wqeffort的博客 1243
上一篇: Go语言学习笔记 --- 入门介绍
下一篇: 企业管理理论综述与实践 — 战略
Wang's Blog
博客等级 码龄12年 7438粉丝 2421原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Wang's Blog

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值