go语言学习 笔记 1(变量,语法,数据类型)
1,包管理
一个文件夹可以称为一个包
在一个包里面可以创建多个文件
包中可以创建包
同一个包内的同一级的包的名字要相同
如:包a中的包b.包b中的包得是同一个package,a中和包b同级的包名字也得是一个名字
必须要有一个main包,入口,就像是c必须有一个main函数
如果没有main,就只能生成一个包的文件,不生成可执行文件
同一个包中同一级的不用去相互包含就可以调用对应文件,但是如果是想要调用当前包下一级的包,就需要import 引入
在文件中的函数的名字首字母大写则可以通过引入后给外部使用,如果是小写就不能让外部使用
2,输出
使用fmt包来输出
fmt.Print/fmt.Println
如果是print和println,本质是从stderr中获取内容(不推荐)
格式化输出(和c的print差不读)
%s用来替换文本,%d用来替换整型.%f用来替换小数,%.2f表示精确到小数点后2位
Fmt.Sprintf() 是根据格式化参数来返回字符串的
比如:
var a=2025-01-08
var b=”data:”
var c=”%s is %s”
var d=fmt.Sprintf(c,b,a)
fmt.println(d)
会输出data is 2025-01-08
3,标识符
不可以以内置的类型名等来作标识符,不可以数字开头,不可以有运算符
4,数据类型
布尔型
var a bool =true
数字类型
有float32,float64,int16,int,uint等等
var a int =3
字符串类型
var s string ="3131s"
其他的派生类型:
指针类型:指针是一个变量,其值为另一个变量的内存地址。
var n=10
var np*int =&n
数组类型:数组是一个固定长度的、具有相同类型元素的序列。数组的长度在声明时就确定,并且在其生命周期内不能改变。
var nums[5 ] int
结构化类型:结构体是一种用户自定义的数据类型,它可以将不同类型的数据组合在一起,形成一个新的复合类型。
channel类型:通道用于在 Go 协程(goroutine)之间进行通信和同步,是 Go 语言实现并发编程的重要机制.通道提供了一种在不同协程之间安全传递数据的方式。
函数类型:在 Go 语言中,函数是一等公民,这意味着函数可以像其他类型的变量一样被赋值、传递和作为返回值。
func add(a, b int) int {
return a + b
}
切片类型:切片是对数组的一个动态视图,它提供了一种灵活、高效的方式来操作数组的一部分。与数组不同,切片的长度是可变的。
var sl [] int
strs =[] string {"red","green"}
接口类型:接口是一种抽象类型,它定义了一组方法的签名,但不包含方法的实现。
下面的例子就定义了一个animal的接口,里面包含了一个speak的方法,之后实现了speak方法
type Animal interface {
Speak() string
}type Dog struct {
name string
}func (d Dog) Speak() string { //这里的d是接收器变量
return "Woof!"
}type Cat struct {
name string
}func (c Cat) Speak() string {
return "Meow!"
}func makeSound(a Animal) {
fmt.Println(a.Speak())
}
Map类型:映射是一种无序的键值对集合,通过键可以快速地查找对应的值。映射的键必须是支持 ==比较运算符的类型
5,变量
变量的声明:一般是使用var来声明
1,指定变量的类型,可以没有初始化,没有初始化时,会使用系统默认的零值
var s v_type s = value
数值类型 :0
布尔类型::false
字符串为""
以下几种类型为 nil:
var a *int//指针 var a []int//切片 var a map[string] int //map var a chan int //通道 var a func(string) int //函数 var a error //接口
2,不给类型,需要根据值自行判断,这个时候就必须初始化
var flag=true
3,使用":="来初始化//不可以给全局变量赋值
n :=1
s:="abc"
可以多个变量一同声明
var s1,s2,s3 = "www","wwwww","wwwwwww"
s4,s5,s6="aa","bb",3 //不用声明类型,可自行判断
全局变量声明
var (
a int
b bool
s string
........
)
值类型和引用类型
通常我们使用的数据类似int,string 都是值类型,是从内存中拷贝一份来用的,当我们进行赋值时,本质只是复制了一个拷贝
var num1=100
var num2=num1
num2=10
fmt.Println(num2)//输出10
fmt.Println(num1)//输出100
var num3=&num1
*num3=1
fmt.Println(*num3)//输出1
fmt.Println(num1)//输出1
常量
在程序运行时,不会被修改的量。
const 标识符 类型 = 值
const length = 40
常量枚举,枚举中可以使用内置函数
const (
a = "aaa"
b = len(a)//3
c = unsafe.Sizeof(a)//16
)
重要:字符串类型在 go 里是个结构体, 包含指向底层数组的指针和长度,这两部分每部分都是 8 个字节,所以字符串类型大小为 16 个字节。
一些注意:
1,如果你定义了一个变量,但是没有使用,(赋值不是使用)会报错
2,可以使用a,b=b,a来交换两个变量
3,_可以表示丢弃值 : _,b=1,2 这里只有b=2,1被丢弃了
4,如果一个函数返回多个值,可以使用并行的方式来获得
a,b=funct()
相关文章:
go语言学习 笔记 1(变量,语法,数据类型)
1,包管理 一个文件夹可以称为一个包 在一个包里面可以创建多个文件 包中可以创建包 同一个包内的同一级的包的名字要相同 如:包a中的包b.包b中的包得是同一个package,a中和包b同级的包名字也得是一个名字 必须要有一个main包,入口,就像是c必须有一个main函数 如果没有mai…...

无网络时自动切换备用网络环境
目录 背景目标为什么需要做自动网络切换网络切换手段 网络环境实现思路和代码部署脚本开机自动执行附录连接两个网络时的路由问题 背景 目标 学校实验室有两个网络环境,我电脑使用网线连接稳定但低速的网络A,使用WiFi连接高速但不稳定的网络B。因此&am…...

电脑32位和64位之区别(Difference between 32-Bit and 64 Bit Computers)
电脑32位和64位之区别 很多小伙伴还不知道电脑32位和64位是什么意思,今天小编就来普及一下。 32位和64位是指电脑处理器(CPU)和操作系统的架构,决定了电脑如何处理数据、存储信息、运行程序等。 32位和64位是指电脑系统中每个处…...

系统思考—结构影响行为
前段时间,我遇到了一位健康食品初创公司的创始人,产品质量毋庸置疑,但销量却始终打不开局面,资金链也日渐紧绷。他一脸困惑地问我:“我们已经尽力了,为什么结果还是不如人意?”经过深入交流&…...

【算法不挂科】算法期末考试【选择题专项练习】<多单元汇总>
前言 大家好吖,欢迎来到 YY 滴算法不挂科系列 ,热烈欢迎! 本章主要内容面向接触过C的老铁 下面是相关传送门 【算法不挂科】算法期末考试题库1(带解析)【选择题53道&填空题36道&算法填空题7道&a…...

2025.1.8(c++对c语言的扩充——堆区空间,引用,函数)
笔记 上一笔记接续(练习2的答案) 练习:要求在堆区连续申请5个int的大小空间用于存储5名学生的成绩,分别完成空间的申请、成绩的录入、升序排序、成绩输出函数以及空间释放函数,并在主程序中完成测试 要求使用new和d…...

如何将Yum源修改为本地挂载的ISO镜像
要将yum源修改为本地挂载的ISO镜像,您可以按照以下步骤进行操作。假设您使用的是CentOS或类似的基于Red Hat的Linux发行版,且已经将ISO镜像文件挂载到系统中。 步骤一:挂载ISO镜像 创建一个挂载点: 首先,您需要创建一个目录来作为ISO镜像的挂载点。例如: sudo mkdir /mnt…...
salesforce如何在系统里保存密码
在 Salesforce 中,保存密码或类似敏感信息时,不应以明文形式存储,而应采用安全的加密和存储机制。以下是一些最佳实践和实现方法: 1. 使用 Salesforce 提供的加密机制 Salesforce 提供了一些内置的加密工具,可以用来加…...
函数提升+上下文+内存清理及释放
文章目录 函数提升上下文函数释放拓展-垃圾回收机制垃圾回收之触发应用 函数提升上下文 函数提升(Hoisting) 概念:在JavaScript中,函数声明会被提升到当前作用域的顶部。这意味着可以在函数声明之前调用函数。例如: sa…...
计算机网络之---计算机网络的性能评估
计算机网络的性能评估是指通过各种标准和指标来衡量网络的工作效率和质量,进而对网络进行优化和改进的过程。评估的目标是确保网络能够满足预期的服务质量(QoS)和性能需求。常见的计算机网络性能评估指标包括带宽、延迟、吞吐量、丢包率等。 …...

Unity学习之UGUI进阶
一、事件监听接口 1、作用 用于实现类型长按、双击、拖拽等基础控件无法实现的功能 所有控件都能够添加更多的事件监听来处理对应的逻辑 2、事件监听接口类型 (1)常用事件接口 (2)不常用事件接口 3、使用事件监听接口 &#…...

深度学习领域创新黑马!频域特征融合新突破
最近,FreqFusion引起了广泛关注,这是一种创新的频率感知特征融合方法,可以提升数据处理的准确性和效率,尤其在语义分割、目标检测、实例分割和全景分割等任务中表现卓越。 通过结合频域分析与特征融合技术,FreqFusion…...

路由器的转发表
【4-24】 已知路由器R₁ 的转发表如表T-4-24 所示。 表T-4-24 习题4-24中路由器R₁的转发表 前缀匹配 下一跳地址 路由器接口 140.5.12.64/26 180.15.2.5 m2 130.5.8/24 190.16.6.2 ml 110.71/16 ----- m0 180.15/16 ----- m2 190.16/16 ----- ml 默认 11…...

用Cline打造你的智能搜索助手:Tavily Search MCP集成指南
引言 本文将详细介绍如何在Cline编辑器中集成Tavily Search智能搜索功能。我们将从MCP(Model Context Protocol)协议基础开始,深入探讨Tavily Search MCP服务器的安装配置、使用方法,以及进阶的二次开发技巧。无论你是AI开发者还…...

HTML+CSS+JS制作中华传统美食主题网站(内附源码,含5个页面)
一、作品介绍 HTMLCSSJS制作一个中华传统文化主题网站,包含首页、菜系页、食材页、名厨页、美食故事页等5个静态页面。其中每个页面都包含一个导航栏、一个主要区域和一个底部区域。 二、页面结构 1. 顶部横幅导航区 包含网站Logo、搜索栏、主导航菜单࿰…...

黄仁勋CES 2025演讲重点内容
黄仁勋CES 2025演讲重点内容 硬件产品发布 GeForce RTX 50系列GPU: 架构与性能提升:正式发布的新一代GeForce RTX 50系列GPU采用英伟达旗舰的Blackwell架构,这是自25年前引入可编程着色技术以来计算机图形领域最重大的创新。该系列显卡在图形…...

TVbox 手机、智能电视节目一网打尽
文章目录 一、简要介绍二、优点三、下载地址 一、简要介绍 TVbox是目前最火爆的多端、多源的电视影音工具,是一款开源的自定义添加站源的影音工具。TVBox,支持电视频道直播。一款TV端影视工具,软件本身不具有任何影视资源,但可以…...

sys.dm_exec_connections:查询与 SQL Server 实例建立的连接有关的信息以及每个连接的详细信息(客户端ip)
文章目录 引言I 基于dm_exec_connections查询客户端ip权限物理联接时间范围dm_exec_connections表see also: 监视SQL Server 内存使用量资源信号灯 DMV sys.dm_exec_query_resource_semaphores( 确定查询执行内存的等待)引言 查询历史数据库客户端ip应用场景: 安全分析缺乏…...

kubesphere前端源码运行
一、下载源码 源码是react,下载地址是 GitHub - kubesphere/console at v3.3.2 然后直接用git下拉就可以了 下拉完成后差不多是这样一个目录结构,记得切分支到3.3.2 二、下载依赖 1、node & yurn 想要运行源码首先需要node,使用刚才…...

分布式主键ID生成方式-snowflake雪花算法
这里写自定义目录标题 一、业务场景二、技术选型1、UUID方案2、Leaf方案-美团(基于数据库自增id)3、Snowflake雪花算法方案 总结 一、业务场景 大量的业务数据需要保存到数据库中,原来的单库单表的方式扛不住大数据量、高并发,需…...
【网络】每天掌握一个Linux命令 - iftop
在Linux系统中,iftop是网络管理的得力助手,能实时监控网络流量、连接情况等,帮助排查网络异常。接下来从多方面详细介绍它。 目录 【网络】每天掌握一个Linux命令 - iftop工具概述安装方式核心功能基础用法进阶操作实战案例面试题场景生产场景…...

python/java环境配置
环境变量放一起 python: 1.首先下载Python Python下载地址:Download Python | Python.org downloads ---windows -- 64 2.安装Python 下面两个,然后自定义,全选 可以把前4个选上 3.环境配置 1)搜高级系统设置 2…...

定时器任务——若依源码分析
分析util包下面的工具类schedule utils: ScheduleUtils 是若依中用于与 Quartz 框架交互的工具类,封装了定时任务的 创建、更新、暂停、删除等核心逻辑。 createScheduleJob createScheduleJob 用于将任务注册到 Quartz,先构建任务的 JobD…...
如何为服务器生成TLS证书
TLS(Transport Layer Security)证书是确保网络通信安全的重要手段,它通过加密技术保护传输的数据不被窃听和篡改。在服务器上配置TLS证书,可以使用户通过HTTPS协议安全地访问您的网站。本文将详细介绍如何在服务器上生成一个TLS证…...
【python异步多线程】异步多线程爬虫代码示例
claude生成的python多线程、异步代码示例,模拟20个网页的爬取,每个网页假设要0.5-2秒完成。 代码 Python多线程爬虫教程 核心概念 多线程:允许程序同时执行多个任务,提高IO密集型任务(如网络请求)的效率…...
uniapp中使用aixos 报错
问题: 在uniapp中使用aixos,运行后报如下错误: AxiosError: There is no suitable adapter to dispatch the request since : - adapter xhr is not supported by the environment - adapter http is not available in the build 解决方案&…...
【Android】Android 开发 ADB 常用指令
查看当前连接的设备 adb devices 连接设备 adb connect 设备IP 断开已连接的设备 adb disconnect 设备IP 安装应用 adb install 安装包的路径 卸载应用 adb uninstall 应用包名 查看已安装的应用包名 adb shell pm list packages 查看已安装的第三方应用包名 adb shell pm list…...

PHP 8.5 即将发布:管道操作符、强力调试
前不久,PHP宣布了即将在 2025 年 11 月 20 日 正式发布的 PHP 8.5!作为 PHP 语言的又一次重要迭代,PHP 8.5 承诺带来一系列旨在提升代码可读性、健壮性以及开发者效率的改进。而更令人兴奋的是,借助强大的本地开发环境 ServBay&am…...

华为OD机试-最短木板长度-二分法(A卷,100分)
此题是一个最大化最小值的典型例题, 因为搜索范围是有界的,上界最大木板长度补充的全部木料长度,下界最小木板长度; 即left0,right10^6; 我们可以设置一个候选值x(mid),将木板的长度全部都补充到x,如果成功…...
在树莓派上添加音频输入设备的几种方法
在树莓派上添加音频输入设备可以通过以下步骤完成,具体方法取决于设备类型(如USB麦克风、3.5mm接口麦克风或HDMI音频输入)。以下是详细指南: 1. 连接音频输入设备 USB麦克风/声卡:直接插入树莓派的USB接口。3.5mm麦克…...