当前位置: 首页 > news >正文

【Go】四、包名、访问范围控制、标识符、运算符

文章目录

  • 1、_
  • 2、包名
  • 3、命名大小影响可访问范围
  • 4、运算符
  • 5、获取终端输入

1、_

  • 下划线"_"本身在Go中是一个特殊的标识符,称为空标识符
  • 用于忽略某个值

1)忽略导入的没使用的包

在这里插入图片描述

2)忽略某个返回值

在这里插入图片描述

2、包名

  • main包是程序的入口包,main函数所在包定义为main包

在这里插入图片描述

  • 不定义main包,就不能得到编译后的可执行文件
package abc//....略//编译:
go run:cannot run non-main package
  • 尽量保持package的名字和目录保持一致

在这里插入图片描述

  • 别和go的标准库冲突
//error
package fmt

3、命名大小影响可访问范围

利用首字母大写小写完成权限控制,对于变量名、函数名、常量名:

  • 若首字母大写,则可以被其他的包访问 ⇒ Java的public
  • 若首字母小写,则只能在本包中使用 ⇒ Java的private
package testvar stuNo int = 9527   //定义学号变量

以下访问其他包中小写字母开头的变量,访问不到:cannot refer to unexported name test.stuNo

package main
import ("fmt""gocode/project/test"
)func main(){fmt.Println(test.stuNo)	//访问不到
}

注意,导包时,包名是从$GOPATH/src/后开始计算的,因此需要配置一个环境变量

在这里插入图片描述

在这里插入图片描述

修改test包中的变量为大写命名:

package testvar StuNo int = 9527   //定义学号变量

可以成功访问了:

在这里插入图片描述

4、运算符

在这里插入图片描述

和Java相比:

  • ++,--只能在变量的后面,不能写在变量的前面 --a ++a 错误写法
  • 不支持三目运算符
  • 短路与&&、短路或|| 都和Java一样
  • 其他运算符 &、*用于指针变量,前者取变量地址,后者取指针变量(的值)所指向的变量的值
package main
import "fmt"
func main(){//+加号://1.正数 2.相加操作  3.字符串拼接var n1 int = +10fmt.Println(n1)var n2 int = 4 + 7fmt.Println(n2)var s1 string = "abc" + "def"fmt.Println(s1)// /除号:fmt.Println(10/3) //两个int类型数据运算,结果一定为整数类型fmt.Println(10.0/3)//浮点类型参与运算,结果为浮点类型// % 取模  等价公式: a%b=a-a/b*bfmt.Println(10%3) // 10%3= 10-10/3*3 = 1fmt.Println(-10%3)fmt.Println(10%-3)fmt.Println(-10%-3)//++自增操作:var a int = 10a++fmt.Println(a)a--fmt.Println(a)//++ 自增 加1操作,--自减,减1操作//go语言里,++,--操作非常简单,只能单独使用,不能参与到运算中去//go语言里,++,--只能在变量的后面,不能写在变量的前面 --a  ++a  错误写法
}

5、获取终端输入

方式一:fmt包的Scanln函数

注意:

  • 传入的是接收用户输入的变量的地址
  • 录入数据的时候,类型一定要匹配,因为底层会自动判定类型的,类型不匹配时,按类型的默认值处理
package main
import "fmt"
func main(){//实现功能:键盘录入学生的年龄,姓名,成绩,是否是VIPvar age intfmt.Println("请录入学生的年龄:")//传入age的地址的目的:在Scanln函数中,对地址中的值进行改变的时候,实际外面的age被影响了fmt.Scanln(&age)//录入数据的时候,类型一定要匹配,因为底层会自动判定类型的var name stringfmt.Println("请录入学生的姓名:")fmt.Scanln(&name)var score float32fmt.Println("请录入学生的成绩:")fmt.Scanln(&score)var isVIP boolfmt.Println("请录入学生是否为VIP:")fmt.Scanln(&isVIP)//将上述数据在控制台打印输出,%v原样输出我传入的变量的值fmt.Printf("学生的年龄为:%v,姓名为:%v,成绩为:%v,是否为VIP:%v",age,name,score,isVIP)
}

方式二:fmt包的Scanf函数

package main
import "fmt"
func main(){       var age int       var name string        var score float32    var isVIP bool       //方式2:Scanffmt.Println("请录入学生的年龄,姓名,成绩,是否是VIP,使用空格进行分隔")fmt.Scanf("%d %s %f %t",&age,&name,&score,&isVIP)//将上述数据在控制台打印输出:fmt.Printf("学生的年龄为:%v,姓名为:%v,成绩为:%v,是否为VIP:%v",age,name,score,isVIP)
}

在这里插入图片描述

相关文章:

【Go】四、包名、访问范围控制、标识符、运算符

文章目录 1、_2、包名3、命名大小影响可访问范围4、运算符5、获取终端输入 1、_ 下划线"_"本身在Go中是一个特殊的标识符,称为空标识符用于忽略某个值 1)忽略导入的没使用的包 2)忽略某个返回值 2、包名 main包是程序的入口包&a…...

达梦数据库日志文件管理

达梦数据库日志文件管理 联机重做日志管理归档日志文件管理开启归档模式:SQL开启归档模式:dmarch.ini归档文件切换和删除 联机重做日志管理 检查联机重做日志: select * from v$rlog; --CUR_FILE表示正在使用的日志文件编号select * fr…...

zookeeper 监控 与 JVM 设置

一、通过JMX监控 JVM 默认情况下,在 ./bin/zkServer.sh 脚本中是默认开启了JMX监控的,并且是不需要认证的,详情可见ZOOMAIN变量; ZOOMAIN"-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port$JMXPORT -D…...

【java】关于String、StringBuffer和StringBuilder的那些事

在之前的文章中我们曾简单介绍过String这个引用类型变量,其实它还有许多特性,还有StringBuffer和StringBuilder这两个方法在字符串操作中也有非常重要的地位,接下来就由小编带大家梳理一下吧👊 目录 一、String 1、构造方法 2、…...

Spring 的 Ioc配置

HappyComponent.java package com.atguigu.Ioc_01;public class HappyComponent {// 默认包含无参的构造方法public void dowork(){System.out.println("HappyComponent.dowork");} }ClientService.java package com.atguigu.Ioc_01;静态工厂类 public class Clien…...

基于Java-SpringBoot+vue实现的前后端分离信息管理系统设计和实现

基于Java-SpringBootvue实现的前后端分离信息管理系统设计和实现 博主介绍:多年java开发经验,专注Java开发、定制、远程、文档编写指导等,csdn特邀作者、专注于Java技术领域 作者主页 央顺技术团队 Java毕设项目精品实战案例《1000套》 欢迎点赞 收藏 ⭐…...

用Python实现办公自动化(自动化处理PDF文件)

自动化处理 PDF 文件 目录 自动化处理 PDF 文件 谷歌浏览器 Chrome与浏览器驱动ChromeDriver安装 (一)批量下载 PDF 文件 1.使用Selenium模块爬取多页内容 2.使用Selenium模块下载PDF文件 3.使用urllib模块来进行网页的下载和保存 4.使用urllib…...

银河麒麟操作系统Kylin Linux 离线安装Nginx1.21.5

一、查看操作系统版本号 nkvers ############## Kylin Linux Version ################# Release: Kylin Linux Advanced Server release V10 (Lance)Kernel: 4.19.90-52.15.v2207.ky10.x86_64Build: Kylin Linux Advanced Server release V10 (SP3) /(Lance)-x86_64-Build20/…...

ApiFox 使用教程

ApiFox 使用教程 目录概述需求: 设计思路实现思路分析1.基本使用教程(Apifox 使用 Postman)Apifox 下使用 mockapifox 下 swaggerApifox 下使用 Jmeter 参考资料和推荐阅读 Survive by day and develop by night. talk for import biz , show…...

github拉取的项目添加至自己的仓库

想把GitHub的开源项目拉到本地进行二开,研究了一下上传到gitee的步骤: 步骤 gitee新建仓库,仓库名与本地文件夹的名称一致,建好后gitee的页面也会有显示git命令 打开项目目录,右键打开git bash(或者在gi…...

ZooKeeper 的持久化机制

持久化的定义: 数据,存到磁盘或者文件当中。机器重启后,数据不会丢失。内存 -> 磁盘的映射,和序列化有些像。 ZooKeeper 的持久化: SnapShot 快照,记录内存中的全量数据TxnLog 增量事务日志&#xff…...

VS2022+QT5.9 提示找不到qtmain.lib

从VS2013QT的项目切换到VS2022QT5.9,安装好mscv2017版本的QT5.9,项目工程选择QT project settings中的Qt Installation为mscv2017版本的QT5.9,编译好提示找不到qtmain.lib 解决思路: 提示找到xxxx.lib,第一库目录不对…...

HTTP和HTTPS谁传输数据更安全?

1.HTTP HTTP在传输数据时,通常都是明文传输,也就是传输的数据没有进行加密。在这种情况下,如果传输的是一些敏感数据,比如某银行卡密码,就很容易被别人截获到,这就对我们的个人利益产生了威胁。 HTTP传输数…...

竞赛常考的知识点大总结(七)图论

最短路 最短路问题(Shortest Path Problem)是图论中的一个经典问题,它要求在给定的图中找到两个顶点之间的最短路径。最短路问题可以是单源最短路问题(从一个顶点到其他所有顶点的最短路径)或所有对最短路问题&#x…...

NOSQL - Redis的简介、安装、配置和简单操作

目录 一. 知识了解 1. 关系型数据库与非关系型数据库 1.1 关系型数据库 1.2 非关系型数据库 1.3 区别 1.4 非关系型数据库产生背景 1.5 NOSQL 与 SQL的数据记录对比 2. 缓存相关知识 2.1 缓存概念 2.2 系统缓存 2.3 缓存保存位置及分层结构 二 . redis 相关知识 1.…...

书生·浦语大模型开源体系(二)笔记

💗💗💗欢迎来到我的博客,你将找到有关如何使用技术解决问题的文章,也会找到某个技术的学习路线。无论你是何种职业,我都希望我的博客对你有所帮助。最后不要忘记订阅我的博客以获取最新文章,也欢…...

docker-compse安装es(包括IK分词器扩展)、kibana、libreoffice

Kibana是一个开源的分析与可视化平台,设计出来用于和Elasticsearch一起使用的。你可以用kibana搜索、查看存放在Elasticsearch中的数据。 Kibana与Elasticsearch的交互方式是各种不同的图表、表格、地图等,直观的展示数据,从而达到高级的数据…...

Electron 读取本地配置 增加缩放功能(ctrl+scroll)

最近,一个之前做的electron桌面应用,需要增加两个功能;第一是读取本地的配置文件,然后记载配置文件中的ip地址;第二就是增加缩放功能; 第一,配置本地文件 首先需要在vue工程根目录中&#xff0…...

docker中配置交互式的JupyterLab环境的问题

【报错1】 Could not determine jupyter lab build status without nodejs 【解决措施】安装nodejs(利用conda进行安装/从官网下载进行安装) 1、conda安装 conda install -c anaconda nodejs 安装后出现其他报错:Please install nodejs 5 and npm bef…...

SQLAlchemy 来查询并统计 MySQL 中 JSON 字段的一个值

在使用 SQLAlchemy 来查询并统计 MySQL 中 JSON 字段的一个值时,你可以结合 SQLAlchemy 的 func 模块来实现 SQL 函数的调用,比如 JSON_EXTRACT,并使用 group_by 和 count 方法来进行分组统计。下面是如何在 SQLAlchemy 中实现这一点的基本步…...

音频算法调试利器:用Android App实时绘制EQ/DRC曲线,告别Matlab依赖

移动端音频算法调试革命:Android实时EQ/DRC可视化工具开发实战 在音频算法开发领域,调试环节长期被桌面级工具垄断,工程师们不得不忍受开发板与工作站之间的频繁切换。这种工作模式不仅效率低下,更无法满足现代音频产品快速迭代的…...

终极指南:使用dmg2img免费快速转换苹果DMG镜像文件

终极指南:使用dmg2img免费快速转换苹果DMG镜像文件 【免费下载链接】dmg2img DMG2IMG allows you to convert a (compressed) Apple Disk Images (imported from http://vu1tur.eu.org/dmg2img). Note: the master branch contains imported code, but lacks bugfix…...

收藏!小白程序员必看:AI时代如何从执行者变身价值创造者?

本文指出,85%的知识工作者使用AI,但仅16%真正获得突破性价值。这些"前沿专业人士"并非更会使用工具,而是懂得重新定义工作。他们通过保持核心技能敏锐度、判断AI输出质量、构建人机协作系统等方式,创造80%的新价值。文章…...

毕业答辩 PPT,让 AI 替你打工:百考通 AI 如何帮你告别排版内耗与逻辑焦虑

​ 又是一年毕业季,论文写完了,查重过了,导师点头了,你以为可以松口气了? 不,还有一座大山叫“答辩 PPT”。 曾经,我也以为 PPT 只是论文的“精简版”,复制粘贴就能搞定。直到我熬…...

Adobe-GenP 3.0:三步解锁Adobe全家桶的终极指南

Adobe-GenP 3.0:三步解锁Adobe全家桶的终极指南 【免费下载链接】Adobe-GenP Adobe CC 2019/2020/2021/2022/2023 GenP Universal Patch 3.0 项目地址: https://gitcode.com/gh_mirrors/ad/Adobe-GenP 还在为昂贵的Adobe Creative Cloud订阅费而烦恼吗&#…...

Linux 设备树深度解析之Amlogic SoC 多媒体

第一部分:Amlogic Canvas —— 视频像素缓冲区元数据中间件1.1 设计精髓分析Amlogic Canvas本质上是一个硬件级别的像素缓冲区描述符池。它存储每个编号对应的宽度、高度、物理地址、包裹模式、块模式(GXBB及之后还支持端序)等元数据。视频解…...

从空洞卷积到多尺度感知:图解PyTorch中ASPP的设计哲学与实现细节(附可运行代码)

从空洞卷积到多尺度感知:图解PyTorch中ASPP的设计哲学与实现细节(附可运行代码) 当我们观察一幅画时,眼睛会自然地聚焦在不同尺度的细节上——从整体构图到局部纹理,这种多尺度感知能力是人类视觉系统的核心优势。计算…...

AI编程助手代码质量守护:Quality Guardian MCP实战指南

1. 项目概述:为AI编程助手打造的“质量守门员”如果你和我一样,日常重度依赖 Claude Code、Cursor 这类 AI 编程助手来写代码,那你肯定也遇到过这个头疼的问题:助手写的代码,语法上没问题,但一跑静态检查&a…...

利用 JiuwenClaw AgentTeam 打造自动化研发团队

利用 JiuwenClaw AgentTeam 打造自动化研发团队 本文介绍如何通过 JiuwenClaw AgentTeam 构建自动化研发团队,实现字幕软件开发、AtomGit Issue/PR 智能处理与飞书文档同步。 目录 JiuwenClaw 平台概述 系统架构预置智能体类型 什么是 AgentTeams飞书群中添加机器人…...

从RISC-V到SSITH:构建下一代硬件安全架构的开放之路

1. 项目概述:从“亡羊补牢”到“未雨绸缪”的硬件安全范式转移在智能设备无处不在的今天,我们正面临一个尴尬的现实:许多产品的安全设计,更像是在一栋已经建好的毛坯房里,见缝插针地安装防盗门和监控摄像头。这种“事后…...