GO-初识包管理

news2024/11/14 13:35:38
  • 初识包管理,知道项目中文件和文件夹之间的关系 
  • 输出,代码,在go编译器运行时会显示在屏幕中
  • 初识数据类型
整型,数字。例如:1、2、3、4
字符串类型,表示文本信息的。例如:“张三”“李四”
布尔类型,真假。例如: 1>2
  • 变量&常量,当做是昵称。 
  • 输入,让用户输入内容  
  • 条件语句,开发一个猜数字程序,用户输入数字与咱们定义的数字进行比较  
包管理
关于包管理的总结:
  • 一个文件夹可以称为一个包 
  • 在文件夹(包)中可以创建多个文件 
  • 在同一个包下的每个文件中必须指定‘包名称’且相同 

我们来重新建一个文件 

来比对一下 

这两个go文件 都是package main 

那么我们的这个包的名字就是main 


比如说我们在src这个文件夹下又创建了一个文件夹  叫zyc
在zyc这个文件夹下面我们再创建两个go文件 
在zyc这个文件夹下面的go文件,他们都叫zyc,也可以叫其他名字,但是baidu.go和bilibili.go必须保持一致,因为他们都在zyc这个文件夹,也就是这个包里面 

关于包的分类
  • main包  如果是main包,则必须写一个main函数,此函数就是项目的入口 (main主函数)。编译生成的是一个可执行文件 
func main() {
    fmt.Println("Hello go")
}
  • 非main包  用来将我们的代码进行分类,分别放在不同的包
我们现在来做一个小实验 
我们重新编辑一下world.go文件  
文件内容如下 
package main


import "fmt"


func Add() {
    fmt.Println("我是world.go的Add功能")
}
编辑完之后我们去往hello.go文件内添加以下字段,直接调用world.go
package main
import "fmt"
func main() {
    fmt.Println("Hello go")
    Add()
}

运行结果如下

运行结果如下
GOROOT=D:\Go #gosetup
GOPATH=C:\Users\YANG\go #gosetup
D:\Go\bin\go.exe build -o C:\Users\YANG\AppData\Local\JetBrains\GoLand2023.3\tmp\GoLand\___go_build_czy.exe czy #gosetup
C:\Users\YANG\AppData\Local\JetBrains\GoLand2023.3\tmp\GoLand\___go_build_czy.exe
Hello go
我是world.go的Add功能
从上面的图片中我们可以看出,这里所运行的不是单个hello.go这个文件,而是将czy这整个目录,整个包一起运行 

现在我们再在czy这个目录下重新创建一个新的目录 zyc
创建两个go文件,baidu.go  google.go

从上面的图片中我们可以看出,这里所运行的不是单个hello.go这个文件,而是将czy这整个目录,整个包一起运行 

现在我们再在czy这个目录下重新创建一个新的目录 zyc

创建两个go文件,baidu.go  google.go

baidu.go内容如下 

package zyc


import "fmt"


func Baidu() {
    fmt.Println("我是百度")
}

google.go内容如下 

package zyc


import "fmt"


func Google() {
    fmt.Println("我是谷歌")
}

现在我们回到hello.go文件内 

这个时候如果我们要调用baidu.go的功能的话 

我们只需要这样即可

而当我们打出zyc.Baidu()的时候,系统会自动给我们添加这行字段 

自动导入了这个包 


运行结果如下 

GOROOT=D:\Go #gosetup
GOPATH=C:\Users\YANG\go #gosetup
D:\Go\bin\go.exe build -o C:\Users\YANG\AppData\Local\JetBrains\GoLand2023.3\tmp\GoLand\___go_build_czy.exe czy #gosetup
C:\Users\YANG\AppData\Local\JetBrains\GoLand2023.3\tmp\GoLand\___go_build_czy.exe
Hello go
我是world.go的Add功能
我是百度
我是谷歌

到了这里我们需要注意一下

如果是package main  因为他们两都是属于同一个包,所以在调用功能的时候不需要说导入某个包

而如果是其他的包 

那么你就需要先把这个包导入进来,然后才能再调用功能 就如上面我演示的那样 

PS:注意事项 

在私下里面去写代码的时候,在每个文件夹里面编写功能的时候,首字母要大写

如果你是大写的话,那么就认为这是一个公有的功能,外部就可以调用

如果你写的是小写的话就意味着这个功能只能在当前的自己的包里面使用,外部是无法调用的 。后面的内容知识点我会再去细讲 

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

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

相关文章

windows docker

写在前面的废话 最近在学习riscv的软件相关内容,倒是有别人的sg2042机器可以通过ssh使用,但是用起来太不方便了,经常断掉,所以想着在自己的机器上跑一跑riscv的操作系统。最常见的有两种方法吧,第一个就是qemu&#xf…

x-zse-96,android端,伪dex加固,so加固,白盒AES,字符串加密

x-zse-96,android端,伪dex加固,so加固,白盒AES,字符串加密 上一篇某招聘软件的sig及sp参数被和谐掉了,所以懂得都懂啊! 因为web的api没有那么全,所以来看了下app的,ios的防护几乎没有,纸糊的一样,android端的有点复杂了,到最后我也没能完整的实现整个加密过程,我也只复现到DF…

探讨苹果 Vision Pro 的空间视频(术语辨析、关键技术、思考)

背景:一位资深视频技术从业者在 Pixvana 工作,积累了丰富的捕获、处理、编码、流传和播放空间媒体经验。 一、术语 空间视频:传统的 3D 视频,呈矩形,包含左右眼视图,如 iPhone15 Pro 和 Vision Pro 可录制。沉浸式视频:非矩形的环绕式视频体验,通常由两个或多个传感器…

亮数据代理IP轻松解决爬虫数据采集痛点

文章目录 一、爬虫数据采集痛点二、为什么使用代理IP可以解决?2.1 爬虫和代理IP的关系2.2 使用代理IP的好处 三、亮数据代理IP的优势3.1 IP种类丰富3.1.1 动态住宅代理IP3.1.2 静态住宅代理IP3.1.3 机房代理IP3.1.4 移动代理IP 3.2 高质量IP全球覆盖3.3 超级代理服务…

​《个人信息出境标准合同办法》第四条中的100万、10万、1万是指人数还是个人信息的条数?​

《个人信息出境标准合同办法》第四条中的100万、10万、1万是指人数还是个人信息的条数? 本条中的3个数字均指的是人数,不是条数。举个极端的例子,从目前的规定来说,如果某企业的国内用户人数超过了100万,即便向境外接收…

由浅到深认识Java语言(11):封装

该文章Github地址:https://github.com/AntonyCheng/java-notes 在此介绍一下作者开源的SpringBoot项目初始化模板(Github仓库地址:https://github.com/AntonyCheng/spring-boot-init-template & CSDN文章地址:https://blog.c…

容器中的大模型(三)| 利用大语言模型:容器化高效地部署 PDF 解析器实践...

作者:宋文欣,智领云科技联合创始人兼CTO 01 简介 大语言模型(LLMs)正逐渐成为人工智能领域的一颗璀璨明星,它们的强大之处在于能够理解和生成自然语言,为各种应用提供了无限可能。为了让这些模型更好地服务…

Android 10.0 app获取当前已连接wifi列表ssid和密码功能实现

1.前言 在10.0的系统定制化开发中,在一些关于wifi的定制中,有产品需求app中要求获取当前连接wifi和密码功能,在系统原生wifi中 是禁止获取wifi连接的密码的,所以就需要对wifi模块进行一部分的修改,来满足app中获取wifi的ssid和密码功能,接下来就来 实现这个功能 如图:…

idea 开发serlvet篮球秩序册管理系统idea开发mysql数据库web结构计算机java编程layUI框架开发

一、源码特点 idea开发 java servlet 篮球秩序册管理系统是一套完善的web设计系统mysql数据库 系统采用serlvetdaobean mvc 模式开发,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。 servlet 篮…

【MySQL】数据库的基础概念

👦个人主页:Weraphael ✍🏻作者简介:目前学习计网、mysql和算法 ✈️专栏:MySQL学习 🐋 希望大家多多支持,咱一起进步!😁 如果文章对你有帮助的话 欢迎 评论&#x1f4ac…

流畅的 Python 第二版(GPT 重译)(一)

前言 计划是这样的:当有人使用你不理解的特性时,直接开枪打死他们。这比学习新东西要容易得多,不久之后,活下来的程序员只会用一个容易理解的、微小的 Python 0.9.6 子集来编写代码 。 Tim Peters,传奇的核心开发者&am…

Expert Prompting-引导LLM成为杰出专家

ExpertPrompting: Instructing Large Language Models to be Distinguished Experts 如果适当设计提示,对齐的大型语言模型(LLM)的回答质量可以显著提高。在本文中,我们提出了ExpertPrompting,以激发LLM作为杰出专家回…

OpenGL+QT实现矢量和影像的叠加绘制

一、QT下OpenGL框架的初始化 OpenGL的介绍我在这里就没有必要介绍了,那OpenGL和QT的结合在这里就有必要先介绍一下,也就是怎么使用QT下的OpenGL框架。要想使用QT下的OpenGL框架,就必须要子类化QGLWidget,然后实现。 void initia…

【算法训练营】STL算法 Stack 栈的压入、弹出序列+最小栈

Stack刷题 1.最小栈2.栈的压入、弹出序列 1.最小栈 题目链接: 最小栈 题目描述 解决思路 创建一个辅助栈 只保存最小的元素 代码 class MinStack { public:MinStack() {}void push(int val) {// 只要是压栈,先将元素保存到_elem中_stack.push(val);//然后判断…

Unicode转码 [ASIS 2019]Unicorn shop1

打开题目 我们买最贵的试试看,结果提示只能输入一个字符 抓包分析一下看看 从中可以发现源代码是如何处理price的 使用的是unicodedata.numeric() 但是我们查看页面源代码,发现页面的编码是utf-8编码 所以,前端html使用的是utf-8&#xff0…

npm ERR! code ELIFECYCLE 解决办法

npm ERR! code ELIFECYCLE 解决办法 问题分析可能原因解决方法 问题 使用Vue脚手架构建项目的时候出现npm ERR! code ELIFECYCLE 分析可能原因 vue-cli-service 并没有加入到环境变量里 解决方法 ./node_modules/.bin/vue-cli-service serve

Go语言超全详解(入门级)

文章目录 1. Go语言的出现2. go版本的hello world3. 数据类型3.0 定义变量3.0.1 如果变量没有初始化3.0.2 如果变量没有指定类型3.0.3 :符号3.0.4 多变量声明3.0.5 匿名变量3.0.6 变量作用域 3.1 基本类型3.2 指针3.2.1 指针声明和初始化3.2.2 空指针 3.3 数组3.3.1 声明数组3.…

IDEA插件MyBatisCodeHelper-Pro的破解与使用

下载链接: https://pan.baidu.com/s/1M9818XstvQNeZPJACrhXcw 提取码: gs83 举例:IDEA 2023.3激活,setting->plugin->右上角齿轮(设置)->Install plugin from disk->选择上面下载的 MybatisCodeHelperNew-3.2.2.zip&…

『Python爬虫』极简入门

本文简介 点赞 收藏 关注 学会了 声明:请勿使用爬虫技术获取公民隐私数据、数据以及企业或个人不允许你获取的数据。 本文介绍如何使用 Python 写一只简单的爬虫,作为入门篇,这个程序不会很复杂,但至少可以讲明爬虫是个什么东…

Flume-transaction机制源码分析

一、整体流程 FileChannel主要是由WAL预写日志和内存队列FlumeEventQueue组成。 二、Transaction public interface Transaction {// 描述transaction状态enum TransactionState { Started, Committed, RolledBack, Closed }void begin();void commit();void rollback();voi…