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

news2024/11/24 22:47:41

文章目录

  • 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 test

var 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 test

var StuNo int = 9527   //定义学号变量

可以成功访问了:

在这里插入图片描述

4、运算符

在这里插入图片描述

和Java相比:

  • ++,--只能在变量的后面,不能写在变量的前面 --a ++a 错误写法
  • 不支持三目运算符
  • 短路与&&、短路或|| 都和Java一样
  • 其他运算符 &、*用于指针变量,前者取变量地址,后者取指针变量(的值)所指向的变量的值
package main
import "fmt"
func main(){
        //+加号:
        //1.正数 2.相加操作  3.字符串拼接
        var n1 int = +10
        fmt.Println(n1)
        var n2 int = 4 + 7
        fmt.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*b
        fmt.Println(10%3) // 10%3= 10-10/3*3 = 1
        fmt.Println(-10%3)
        fmt.Println(10%-3)
        fmt.Println(-10%-3)
        
        //++自增操作:
        var a int = 10
        a++
        fmt.Println(a)
        a--
        fmt.Println(a)
        //++ 自增 加1操作,--自减,减1操作
        //go语言里,++,--操作非常简单,只能单独使用,不能参与到运算中去
        //go语言里,++,--只能在变量的后面,不能写在变量的前面 --a  ++a  错误写法
}

5、获取终端输入

方式一:fmt包的Scanln函数

注意:

  • 传入的是接收用户输入的变量的地址
  • 录入数据的时候,类型一定要匹配,因为底层会自动判定类型的,类型不匹配时,按类型的默认值处理
package main
import "fmt"
func main(){
        //实现功能:键盘录入学生的年龄,姓名,成绩,是否是VIP
        var age int
        fmt.Println("请录入学生的年龄:")
        //传入age的地址的目的:在Scanln函数中,对地址中的值进行改变的时候,实际外面的age被影响了
        fmt.Scanln(&age)//录入数据的时候,类型一定要匹配,因为底层会自动判定类型的
        var name string
        fmt.Println("请录入学生的姓名:")
        fmt.Scanln(&name)
        var score float32
        fmt.Println("请录入学生的成绩:")
        fmt.Scanln(&score)
        var isVIP bool
        fmt.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:Scanf
        fmt.Println("请录入学生的年龄,姓名,成绩,是否是VIP,使用空格进行分隔")
        fmt.Scanf("%d %s %f %t",&age,&name,&score,&isVIP)
        //将上述数据在控制台打印输出:
        fmt.Printf("学生的年龄为:%v,姓名为:%v,成绩为:%v,是否为VIP:%v",age,name,score,isVIP)
}

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1554864.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

2024最新华为OD机试试题库全 -【两个字符串间的最短路径问题】- C卷

1. 🌈题目详情 1.1 ⚠️题目 给定两个字符串,分别为字符串 A 与字符串 B。 例如 A字符串为 “ABCABBA”,B字符串为 “CBABAC” 可以得到下图 m * n 的二维数组,定义原点为(0,0),终点为(m,n),水平与垂直的每一条边距离为1,映射成坐标系如下图。 从原点 (0,0) 到 (0,…

Matlab与数学计算

原文地址:Matlab与数学计算 - Pleasure的博客 下面是正文内容: 前言 这是一篇笔记。主要用于介绍MatLab的作用以及其作为数学工具的使用方法。 目的是总结学校课件复习自用,但是不可能像相关的书籍那么系统全面,力求简单明了。都…

VsCode正确解决vue3+Eslint+prettier+Vetur的配置冲突

手把手教你VsCode正确解决vue3EslintprettierVetur的配置冲突 VsCode正确解决vue3EslintprettierVetur的配置冲突Eslint文档查看和修改规则:step1:首先快速浏览下规则简要setp2: ctrlF 搜索你要配置规则的英文名,例如attributesetp3: 修改配置…

LeetCode 热题 100 题解(一):哈希部分

《LeetCode热题 100》 经过了两个多月,终于刷完了代码随想录的题目,现在准备开始挑战热题一百了,接下来我会将自己的题解以博客的形式同步发到力扣和 c 站,希望在接下来的征程中与大家共勉! 题组一:哈希 题…

OSCP靶场--RubyDome

OSCP靶场–RubyDome 考点(CVE-2022-25765 suid ruby提权) 1.nmap扫描 ┌──(root㉿kali)-[~/Desktop] └─# nmap -Pn -sC -sV 192.168.249.22 --min-rate 2500 Starting Nmap 7.92 ( https://nmap.org ) at 2024-03-29 00:28 EDT Nmap scan report for 192.168.249.22 Hos…

基于Spring Boot 3 + Spring Security6 + JWT + Redis实现接口资源鉴权

紧接上一篇文章,基于Spring Boot 3 Spring Security6 JWT Redis实现接口资源鉴权 系列文章指路👉 系列文章-基于SpringBoot3创建项目并配置常用的工具和一些常用的类 项目源码👉 /shijizhe/boot-test 文章目录 1. 修改 UserDetailsServic…

【解決|三方工具】Obi Rope 编辑器运行即崩溃问题

开发平台:Unity 2021.3.7 三方工具:Unity资产工具 - Obi Rope   问题背景 使用Unity三方开发工具 - Obi Rope 模拟绳索效果。配置后运行 Unity 出现报错并崩溃。通过崩溃日志反馈得到如下图所示 这是一个序列化问题造成的崩溃,指向性为 Obi…

CentOS VNC

VNC服务选择 先来说说Linux上的VNC服务端,比较常用的就是tigervnc和x11vnc。x11vnc可以让远程访问者控制本地的实际显示器,而tigervnc既可以远程控制实际显示器,还可以控制平行独立于当前物理显示器的虚拟显示器。 1、安装 tigervnc yum i…

docker--部署 (超详版) (五)

环境准备:docker,mysql,redis,镜像,nginx 把虚拟机打开,连接xshell,参考博客: https://blog.csdn.net/m0_74229802/article/details/136965820?spm1001.2014.3001.5501 一&#x…

使用anime.js实现列表滚动轮播

官网&#xff1a;https://animejs.com/ html <div id"slide1"><div class"weather-item" v-for"item in weatherList"><div><img src"../../images/hdft/position.png" alt"">{{item.body.cityInf…

SpringBoot分布式锁自定义注解处理幂等性

SpringBoot分布式锁自定义注解处理幂等性 注解简介 注解&#xff08;Annotation&#xff09;是Java SE 5.0 版本开始引入的概念&#xff0c;它是对 Java 源代码的说明&#xff0c;是一种元数据&#xff08;描述数据的数据&#xff09;。 Java中的注解主要分为以下三类: JDK…

HTML5 和 CSS3 提高

一、HTML5 的新特性 HTML5 的新增特性主要是针对于以前的不足&#xff0c;增加了一些新的标签、新的表单和新的表单属性等。这些新特性都有兼容性问题&#xff0c;基本是 IE9 以上版本的浏览器才支持&#xff0c;如果不考虑兼容性问题&#xff0c;可以大量使用这些新特性。 声明…

账号微服务短信验证码发送工具单元测试

账号微服务短信验证码发送工具单元测试 注意sms的 app-code #----------sms短信配置-------------- sms:app-code: dd7829bedfaf4373875aa91abba82523template-id: JM1000372package net.xdclass.config;import org.springframework.context.annotation.Bean; import org.spri…

人工智能|推荐系统——搜索引擎广告

原文题目 Dark sides of artificial intelligence: The dangers of automated decision-making in search engine advertising(JASIST,2023) 人工智能的阴暗面:搜索引擎广告自动决策的危险 摘要 随着人工智能应用的日益广泛,搜索引擎供应商越来越多地要求广告商使用基于机…

Clickhouse-表引擎探索之MergeTree

引言 前文曾说过&#xff0c;Clickhouse是一个强大的数据库Clickhouse-一个潜力无限的大数据分析数据库系统 其中一个强大的点就在于支持各类表引擎以用于不同的业务场景。 MergeTree MergeTree系列的引擎被设计用于插入极大量的数据到一张表当中。数据可以以数据片段的形式一…

OpenHarmony实战:Vmware虚拟机和Ubuntu安装

避坑指南 1. 虚拟机命名、用户名称、路径不能有汉字 名称或者路径有汉字&#xff0c;导致输入失败或者安装失败 2. 虚拟机处理器内核总数&#xff08;处理器数量 X 每个处理器的内核数量&#xff09;不得超过电脑逻辑处理器总个数 太少时&#xff0c;下载代码和编译非常缓慢…

YOLOv9解读

论文地址&#xff1a;https://arxiv.org/abs/2402.13616 Github地址&#xff1a;https://github.com/WongKinYiu/yolov9 一、引言 作者认为当前深度学习方法忽略了一个事实&#xff0c;即当输入数据经过逐层特征提取和空间变换时&#xff0c;大量信息将会丢失。本文基于深入研…

ASP.NET制作试卷(单选+多选)

需求&#xff1a; 1.包含单选题、多选题。 2.所有题做完再提交。 3.提示错误、统计分数&#xff08;提交后&#xff09;。 项目结构&#xff1a; 效果展示&#xff1a; 效果展示&#xff08;视频&#xff09;&#xff1a; ASP.NET练习1效果 index.aspx代码&#xff1a; &l…

如何在 Mac 上打开、编辑、复制、移动或删除存储在 Windows NTFS 格式 USB 驱动器上的文件 Tuxera NTFS for Mac使用教程

当您获得一台新 Mac 时&#xff0c;它只能读取 Windows NTFS 格式的 USB 驱动器。要将文件添加、保存或写入您的 Mac&#xff0c;您需要一个附加的 NTFS 驱动程序。Tuxera 他可以帮忙实现这一功能&#xff01; Tuxera可以轻松转换驱动器&#xff1a;无论使用Windows PC还是Mac&…

期货开户要找到适合自己的系统

物有一个生物圈&#xff0c;大鱼吃小鱼&#xff0c;小鱼吃虾。在期货市场这条生物圈里面&#xff0c;大部分人就是期货市场的虾子&#xff0c;是被吃的&#xff0c;所以必须成长起来&#xff0c;往更高一层走&#xff0c;到可以吃虾子的时候&#xff0c;就是挣钱的时候。学习不…