Go语言--快速入门
Go语言特点
我们先看一下简单的Go语言程序
package mainimport "fmt"func main()
{ // 错误,{ 不能在单独的行上fmt.Println("Hello, World!")
}
我们可以看到外型非常像我们的JAVA,但是不需要;作为结尾,也就是我们使用行分隔符。
之后的特点就是声明变量的方式,我们使用了关键字var,
package main
import "fmt"
func main() {var a string = "Runoob"fmt.Println(a)var b, c int = 1, 2fmt.Println(b, c)var d float64//声明了stringVal这个变量stringVal:="s"var x,y bool=true,true
}
package mainimport "fmt"func main() {const LENGTH int = 10const WIDTH int = 5 var area intconst a, b, c = 1, false, "str" //多重赋值const x string="huihui"area = LENGTH * WIDTHfmt.Printf("面积为 : %d", area)println()println(a, b, c)
}
我们的语言常量的关键字是const,用法和var一样。
package mainimport "fmt"func main() {var a int = 4var ptr *int=nil/* & 和 * 运算符实例 */ptr = &a /* 'ptr' 包含了 'a' 变量的地址 */fmt.Printf("a 的值为 %d\n", a);fmt.Printf("*ptr 为 %d\n", *ptr);
}
这里指针的用法和我们的C语言一致,不同是指针的空值用nil表示。
/* 函数返回两个数的最大值 */
func max(num1, num2 int) (int,int) {/* 声明局部变量 */var result intif (num1 > num2) {result = num1} else {result = num2}return result ,result
}
我们的函数定义关键字是func,但是不同的是我们的函数返回值类型是放在后面的。同时GO语言还可以同时返回多个参数。
package mainimport "fmt"func main() {var n [10]int /* n 是一个长度为 10 的数组 ,定义数组*//* 定义不定长数组*/balance :=[...]float32{1.2,32.3,23.4}/* 输出每个数组元素的值 ,可以用索引来读取*/for j = 0; j < 10; j++ {fmt.Printf("Element[%d] = %d\n", j, n[j] )}
}
GO语言定义数组的方式是将[]type放在我们的标识符后面,如果是不定长的数组,我们使用[…]来定义。
package mainimport "fmt"func main() {var a int= 20 /* 声明实际变量 */var ip *int /* 声明指针变量 */ip = &a /* 指针变量的存储地址 */var b *int=nil fmt.Printf("a 变量的地址是: %x\n", &a )/* 指针变量的存储地址 */fmt.Printf("ip 变量储存的指针地址: %x\n", ip )/* 使用指针访问值 */fmt.Printf("*ip 变量的值: %d\n", *ip )
}
和C语言一样我们使用*来声明指针变量,用&获得变量的地址。
package mainimport "fmt"func main() {var numbers = make([]int,3,5)var numbers1 []string={"333","ddfff","ddffccc"}printSlice(numbers)
}func printSlice(x []int){fmt.Printf("len=%d cap=%d slice=%v\n",len(x),cap(x),x)
}
GO语言切片就是没有固定长度的可变数组,所以定义时就是不加数字,还可以使用make来进行定义。
package main
import "fmt"
// 声明一个包含 2 的幂次方的切片
var pow = []int{1, 2, 4, 8, 16, 32, 64, 128}
//定义cahnnel,元素有两个整型
ch:=make(chan int,2)func main() {
//接受两个整型元素ch->1ch->2//遍历ch中的value值for value :=ch{fmt.Printf(value)}// 遍历 pow 切片,i 是索引,v 是值for i, v := range pow {// 打印 2 的 i 次方等于 vfmt.Printf("2**%d = %d\n", i, v)}//只遍历Keyfor _,v:= range pow{fmt.Printf(v)}
}
Go 语言中 range 关键字用于 for 循环中迭代数组(array)、切片(slice)、通道(channel)或集合(map)的元素。
相关文章:
Go语言--快速入门
Go语言特点 我们先看一下简单的Go语言程序 package mainimport "fmt"func main() { // 错误,{ 不能在单独的行上fmt.Println("Hello, World!") }我们可以看到外型非常像我们的JAVA,但是不需要;作为结尾,…...
京东云主机怎么用?使用京东云服务器建网站(图文教程)
京东云主机怎么用?非常简单,本文京东云服务器网jdyfwq.com使用以使用京东云服务器搭建WordPress博客网站为例,来详细说下京东云主机的使用方法。使用京东云服务器快速搭建WordPress网站教程,3分钟基于应用镜像一键搞定,…...
Linux 基础入门操作-实验七 进程的介绍
实验七 进程的介绍 7.1 进程基础概念 Linux进程在内存中包含三部分数据:码段、堆栈段和数据段。代码段存放了程序的代码。代码段可以为机器中运行同一程序的数个进程共享。堆栈段存放的是子程序的返回地址、子程序的参数及程序的局部变量。而数据段则存放程序的全…...
SQL进阶技巧:SQL中的正则表达式应用?
目录 0 引言 1. 正则表达式函数 1.1 regexp_extract 1.2 regexp_replace 1.3 regexp_like 2. 在WHERE子句中使用正则表达式 3. 在GROUP BY中使用正则表达式 4. 性能考虑 5. 高级正则表达式技巧 5.1 使用正则表达式进行数据清洗 5.2 使用正则表达式处理JSON 6. 正则…...
算法数组面试理论
数组是存放在连续内存空间内的相同类型数据的集合 (所以在删除添加元素的时候需要移动其他的元素的地址) 数组的元素是不能删除的,只能覆盖。(因为内存地址是连续的,所以不能删除。或者可以这么理解:在一…...
ASP.NET Zero是什么?适合哪些业务场景?
一、ASP.NET Zero是什么? ASP.NET Zero 是一个基于 ASP.NET Boilerplate (ABP) 框架的模板项目,它提供了预建的页面和强大的基础设施架构,以便开发者能够快速开发应用层。它的特点包括但不限于: 多合一解决方案:提供多…...
获取期货股票分钟级别数据以及均线策略
【数据获取】 银河金融数据库(yinhedata.com) 能够获取国内外金融股票、期货历史行情数据,包含各分钟级别。 【搭建策略】 均线策略作为一种广泛应用于股票、期货等市场的技术分析方法,凭借其简单易懂、操作性强等特点…...
入门篇-1 数据结构简介
数据结构简介 在计算机科学中,数据结构是指组织、存储和管理数据的方式,它使得数据可以被高效地访问和修改。数据结构是计算机程序设计和算法分析中的一个重要概念,因为它们直接影响到程序的执行效率和内存使用。 1. 什么是数据结构&#x…...
Anaconda安装
1.进入Anaconda官网 2.填写邮箱信息 3.在邮箱消息中获取下载链接 4.进入下载页面,选择合适版本下载 5.进入Anaconda安装界面 6.点击“I agree” 7.选择个人即可“Just Me” 8.选择文件安装路径 9.允许创建快捷方式 10.等待下载 11.完成安装...
Elasticsearch学习笔记(六)使用集群令牌将新加点加入集群
随着业务的增长,陆续会有新的节点需要加入集群。当我们在集群中的某个节点上使用命令生成令牌时会出现报错信息。 # 生成令牌 /usr/share/elasticsearch/bin/elasticsearch-create-enrollment-token -s node出现报错信息: Unable to create enrollment…...
项目建设方案,软件技术方案,整体技术方案,软件建设文档编制(word原件)
1 引言 1.1 编写目的 1.2 项目概述 1.3 名词解释 2 项目背景 3 业务分析 3.1 业务需求 3.2 业务需求分析与解决思路 3.3 数据需求分析【可选】 4 项目建设总体规划【可选】 4.1 系统定位【可选】 4.2 系统建设规划 5 建设目标 5.1 总体目标 5.2 分阶段目标【可选】 5.2.1 业务目…...
vue3定义组件
在Vue 3中,定义组件有多种方式,包括使用单文件组件(Single File Components, SFC)、使用JavaScript对象定义组件、以及使用组合式API(Composition API)。 1. 单文件组件(SFC) 这是…...
BOM常见操作方法汇总
BOM(Browser Object Model,浏览器对象模型)提供了与浏览器窗口交互的方法和属性。BOM 包括了许多对象,如 window、location、history、navigator 等,这些对象提供了与浏览器窗口相关的各种功能。 以下是一些常见的 BO…...
Python+whisper/vosk实现语音识别
目录 一、Whisper 1、Whisper介绍 2、安装Whisper 3、使用Whisper-base模型 4、使用Whisper-large-v3-turbo模型 二、vosk 1、Vosk介绍 2、vosk安装 3、使用vosk 三、总结 一、Whisper 1、Whisper介绍 Whisper 是一个由 OpenAI 开发的人工智能语音识别模型…...
如何在算家云搭建LivePortrait(视频生成)
一、LivePortrait简介 LivePortrait 是一个可控人像视频生成框架,能够准确、实时地将驱动视频的表情、姿态迁移到静态或动态人像视频上,生成极具表现力的视频结果。 该项目的模型产生了定性肖像动画。只要输入一张静态的肖像图像,我们的模型…...
CSS 命名规范及 BEM 在前端开发中的实践
一:CSS命名规范的重要性 1、提高代码可读性 对于开发者自身来说,遵循规范的命名可以让你在日后回顾代码时,快速理解每个样式类的用途。例如,使用 “.header-logo” 这样的命名,一眼就能看出是头部的 logo 元素的样式,而不是一些无意义的命名如 “.box1”。当团队协作开发…...
SwiftUI 6.0(iOS 18)新增的网格渐变色 MeshGradient 解惑
概述 在 SwiftUI 中,我们可以借助渐变色(Gradient)来实现更加灵动多彩的着色效果。从 SwiftUI 6.0 开始,苹果增加了全新的网格渐变色让我们对其有了更自由的定制度。 因为 gif 格式图片自身的显示能力有限,所以上面的…...
【计算机网络】详谈TCP协议确认应答机制捎带应答机制超市重传机制连接管理机制流量管理机制滑动窗口拥塞控制延迟应答
一、TCP 协议段格式 1.1、4位首部长度 4位首部长度的基本单位是4字节,也就是说如果4位首部长度填6,那报头长度就是24字节。报头长度的取值范围为[0,60]字节,也就是说选项的最大长度为40字节。 二、确认应答机制 发送数据和发送应答&#x…...
rk3566开发之rknn npu 部署
目录 NPU使用 RKNN 模型 非 RKNN 模型 RKNN-Toolkit2工具 RKNN NPU 测试代码如下 main.cc ssd.cc 调用 ssd模型进行目标检测测试 ssd.h qt 中调用 rknn npu 接口 NPU使用 RK3566 内置 NPU 模块。使用该NPU需要下载RKNN SDK,RKNN SDK 为带有 NPU 的 RK3566/RK3568 芯片…...
项目生产经理需要具备哪些技能和素质
一、专业技能 1、技术知识 熟悉项目所涉及的工程领域专业知识,包括施工工艺、技术规范、质量标准等。能够准确理解设计图纸,指导施工人员进行正确的施工操作。掌握工程测量、材料检验、工程试验等基本技能,确保工程质量符合要求。 利用进度猫…...
独立开发者如何利用Taotoken的多模型能力构建低成本AI应用原型
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 独立开发者如何利用Taotoken的多模型能力构建低成本AI应用原型 对于资源有限的独立开发者或初创团队而言,在应用开发初…...
从零上手RP2040:为树莓派Pico注入MicroPython灵魂
1. 为什么选择MicroPython? 对于刚接触树莓派Pico(RP2040)的新手来说,选择MicroPython作为开发语言是个明智的决定。这就像第一次学骑自行车时选择带辅助轮的车子——它降低了入门门槛,让你能快速感受到编程的乐趣。Mi…...
别再只用moviepy了!用Python的av库给视频批量加字幕,5分钟搞定
别再只用moviepy了!用Python的av库给视频批量加字幕,5分钟搞定 视频字幕添加是内容创作者的高频需求,无论是自媒体博主制作教程视频,还是教育工作者录制课程,精准的字幕不仅能提升观看体验,还能显著提高内容…...
Awesome-LLM-Apps:大语言模型应用开发实战指南与开源项目宝库
1. 项目概述:一个大型语言模型应用的开源宝库如果你最近在折腾大语言模型,想找点现成的、能跑起来的应用来学习或者直接部署,那你大概率在GitHub上见过这个项目。awesome-llm-apps, 一个由开发者Shubham Saboo维护的仓库ÿ…...
雷达接收机频谱稳定与纯度:核心指标、测试方法与设计实战
1. 项目概述:为什么频谱稳定性和纯度是雷达的“生命线”? 在雷达系统里,我们常把发射功率、天线增益、接收机灵敏度这些指标挂在嘴边,因为它们直接决定了雷达能“看”多远。但今天要聊的“接收机频谱稳定性和纯度”,就…...
通用 Agent 与领域 Agent 的架构差异
从GPT-4o到AI程序员助手:通用Agent与领域Agent的核心架构差异及选型指南 摘要/引言 你有没有试过同时用两款截然不同的AI工具帮你干活?比如前一秒用GPT-4o对着一张写满Python报错的截图问“为什么我的分布式爬虫在Kubernetes集群里总是崩溃”,后一秒打开Cursor编辑器的AI助…...
Codex自主规划开发工作流实践 Codex CLI、AI编程、自动规划开发、Agent工作流、长任务AI开发、CodexLoop
Codex自主规划开发工作流实践 Codex CLI、AI编程、自动规划开发、Agent工作流、长任务AI开发、CodexLoop 老规矩 先放最新地址: Codex 最新官方客户端下载地址 https://codexdown.cn/ 最近在折腾一件很有意思的事情: 不再给 Codex 写“超详细步骤”&…...
WinFlexBison深度解析:Windows平台编译工具链的完整解决方案
WinFlexBison深度解析:Windows平台编译工具链的完整解决方案 【免费下载链接】winflexbison Main winflexbision repository 项目地址: https://gitcode.com/gh_mirrors/wi/winflexbison 在Windows平台上开发编译器、解释器或复杂文本解析器时,开…...
ThinkPad嵌入式控制器深度解析:TPFanCtrl2散热优化实践方案
ThinkPad嵌入式控制器深度解析:TPFanCtrl2散热优化实践方案 【免费下载链接】TPFanCtrl2 ThinkPad Fan Control 2 (Dual Fan) for Windows 10 and 11 项目地址: https://gitcode.com/gh_mirrors/tp/TPFanCtrl2 在移动工作站领域,ThinkPad以其卓越…...
哔哩下载姬完整指南:三步快速掌握B站视频批量下载技巧
哔哩下载姬完整指南:三步快速掌握B站视频批量下载技巧 【免费下载链接】downkyi 哔哩下载姬downkyi,哔哩哔哩网站视频下载工具,支持批量下载,支持8K、HDR、杜比视界,提供工具箱(音视频提取、去水印等&#…...
