【Go】Go语言基础内容
变量声明:
-
变量声明:在Go中,变量必须先声明然后再使用。声明变量使用
var关键字,后面跟着变量名和类型,如下所示:var age int这行代码声明了一个名为
age的整数变量。 -
变量初始化:您可以在声明时为变量分配初始值,也可以省略类型,让Go自动推断类型:
var name string = "John" var age = 30 // 类型自动推断为int -
短变量声明:对于局部变量,可以使用
:=运算符来进行短变量声明。这种方式不需要显式指定类型:name := "John"Go会自动推断
name的类型为字符串。 -
常量声明:常量使用
const关键字来声明,一旦声明,它们的值不能更改:const pi = 3.14常量的值在编译时确定,并且必须是常量表达式。
条件和循环:
-
if语句:Go中的
if语句用于执行条件语句。它可以与一个可选的else语句一起使用:if age >= 18 {fmt.Println("You are an adult") } else {fmt.Println("You are not an adult") } -
switch语句:Go的
switch语句非常灵活,可以用于多个条件,而且不需要使用break关键字:switch day { case "Monday":fmt.Println("It's Monday!") case "Tuesday":fmt.Println("It's Tuesday!") default:fmt.Println("It's another day of the week") } -
for循环:Go的
for循环有三种基本用法:-
基本的
for循环:for i := 0; i < 5; i++ {fmt.Println(i) } -
for循环作为 while 使用:sum := 0 for sum < 10 {sum += 1 } -
for循环迭代集合(如切片或映射):numbers := []int{1, 2, 3, 4, 5} for index, value := range numbers {fmt.Printf("Index: %d, Value: %d\n", index, value) }
-
-
break和continue:在循环中,您可以使用
break关键字来立即退出循环,而continue关键字用于跳到下一次循环迭代。
当涉及到Go语言的函数、结构体和接口时,以下是详细的解释:
函数:
在Go语言中,函数是一段可重用的代码块,用于执行特定任务或操作。函数有以下特性:
-
定义函数: 使用
func关键字来定义函数。函数包含函数名、参数列表和返回值列表。func add(a, b int) int {return a + b } -
参数和返回值: 函数可以接受参数,并且可以有一个或多个返回值。在上面的示例中,
add函数接受两个整数参数,并返回一个整数。 -
函数调用: 要调用函数,只需使用函数名和所需的参数列表。
result := add(5, 3) -
多返回值: Go支持多返回值的函数,这意味着一个函数可以返回多个值。
func divide(a, b int) (int, error) {if b == 0 {return 0, errors.New("division by zero")}return a / b, nil } -
匿名函数: 在Go中,您还可以创建匿名函数,这是没有函数名的函数,通常用于在函数内部定义和使用。
func main() {add := func(a, b int) int {return a + b}result := add(2, 3)fmt.Println(result) }
结构体:
Go语言中的结构体是一种用户自定义的复合数据类型,用于组合多个字段来表示一个数据结构。结构体有以下特性:
-
定义结构体: 使用
type关键字来定义结构体。结构体的字段通常使用大写字母开头,表示它们是导出的(可以在其他包中访问)。type Person struct {FirstName stringLastName stringAge int } -
创建结构体实例: 使用结构体类型创建实例,然后初始化字段。
person := Person{FirstName: "John",LastName: "Doe",Age: 30, } -
访问结构体字段: 使用
.运算符来访问结构体字段的值。fmt.Println(person.FirstName) // 输出 "John" -
匿名结构体: 您还可以创建匿名结构体,用于临时存储数据。
person := struct {FirstName stringLastName string }{FirstName: "John",LastName: "Doe", } -
嵌套结构体: 结构体可以嵌套在其他结构体内,以构建更复杂的数据结构。
接口:
接口是Go语言中的一种抽象类型,它定义了一组方法的签名,但没有具体的实现。接口有以下特性:
-
定义接口: 使用
type关键字定义接口。type Writer interface {Write([]byte) (int, error) } -
实现接口: 任何类型只要实现了接口中定义的所有方法,都被认为是实现了该接口。Go使用隐式接口实现。
-
接口类型变量: 可以创建接口类型的变量,并将任何实现了该接口的值分配给这些变量。
var w Writer w = os.Stdout -
多接口实现: 一个类型可以同时实现多个接口。
-
空接口: 空接口
interface{}不包含任何方法,因此可以表示任何类型的值。var emptyInterface interface{} emptyInterface = 42 emptyInterface = "Hello" -
类型断言: 使用类型断言来检查接口类型变量的底层类型和获取其值。
value, ok := emptyInterface.(int) if ok {fmt.Println("It's an integer:", value) }
本期好书推荐《精通Go语言》
下单链接:https://item.jd.com/13543938.html

相关文章:
【Go】Go语言基础内容
变量声明: 变量声明:在Go中,变量必须先声明然后再使用。声明变量使用 var 关键字,后面跟着变量名和类型,如下所示: var age int这行代码声明了一个名为 age 的整数变量。 变量初始化:您可以在声…...
HP-UNIX 系统安全基线 安全加固操作
目录 账号管理、认证授权 账号 ELK-HP-UX-01-01-01 ELK -HP-UX-01-01-02 ELK -HP-UX-01-01-03 ELK-HP-UX-01-01-04 ELK-HP-UX-01-01-05 口令 ELK-HP-UX-01-02-01 ELK-HP-UX-01-02-02 ELK-HP…...
第九天:信息打点-CDN绕过篇amp;漏洞回链amp;接口探针amp;全网扫描amp;反向邮件
信息打点-CDN绕过篇 cdn绕过文章:https://www.cnblogs.com/qiudabai/p/9763739.html 一、CDN-知识点 1、常见访问过程 1、没有CDN情况下传统访问:用户访问域名-解析服务器IP–>访问目标主机 2.普通CDN:用户访问域名–>CDN节点–>…...
【利用二手车数据进行可视化分析】
利用二手车数据进行可视化分析 查看原始数据去除重复数据需求分析1.统计全国总共有多少量二手车,用KPI图进行展示2.统计安徽总共有多少量二手车,用KPI图进行展示3.统计合肥总共有多少量二手车,用KPI图进行展示4.取最贵的10辆二手车信息&#…...
快速测试 3节点的redis sentinel集群宕机2个节点以后是否仍能正常使用
有同事问我,三个redis sentinel节点,宕机两个节点以后,是否还能够正常的通过redis sentinel正常访问redis的数据。我想了想,理论上是可以的,但是我没试过,今天有时间就测试了一下。搭建环境和测试代码的过程…...
echarts词云图echarts-wordcloud使用方法
1、echarts5.0以下的版本使用 echarts-wordcloud 1.0 的词云 1. 安装 wordCloud 1.0 依赖包npm install echarts-wordcloud12. man.js 注入import echarts-wordcloud 2、echarts5.0及以上的下载 echarts-wordcloud 2.0 版本 注意:npm install echarts-wordcloud …...
二叉树的OJ练习(二)
通过前序遍历数组构建二叉树 题目:通过前序遍历的数组(ABD##E#H##CF##G##)构建二叉树 TreeNode* TreeCreat(char* a,int* pi) {if(a[*pi] #){(*pi);return NULL; }TreeNode* root (TreeNode*)malloc(sizeof(TreeNode));if(root NULL){p…...
uni-app 微信小程序之自定义navigationBar顶部导航栏
文章目录 1. 实现效果2. App.vue3. pages.json 配置自定义4. 顶部导航栏 使用 微信小程序自定义 navigationBar 顶部导航栏,兼容适配所有机型 1. 实现效果 2. App.vue 在App.vue 中,设置获取的 StatusBar,CustomBar 高度(实现适配…...
前端入门:HTML初级指南,网页的简单实现!
代码部分: <!DOCTYPE html> <!-- 上方为DOCTYPE声明,指定文档类型为HTML --> <html lang"en"> <!-- html标签为整个页面的根元素 --> <head> <!-- title标签用于定义文档标题 --> <title>初始HT…...
低多边形3D建模石头材质纹理贴图
在线工具推荐: 3D数字孪生场景编辑器 - GLTF/GLB材质纹理编辑器 - 3D模型在线转换 - Three.js AI自动纹理开发包 - YOLO 虚幻合成数据生成器 - 三维模型预览图生成器 - 3D模型语义搜索引擎 当谈到游戏角色的3D模型风格时,有几种不同的风格…...
【华为OD题库-081】最长的元音子串长度-Java
题目 题目描述: 定义当一个字符串只有元音字母一(a,e,i,o,u,A,E,l,O,U)组成, 称为元音字符串,现给定一个字符串,请找出其中最长的元音字符串,并返回其长度,如果找不到请返回0, 字符串中任意一个连续字符组成…...
第9节:Vue3 指令
如何在UniApp中使用Vue3的指令: <template> <view> <!-- 使用指令 --> <text v-show"isVisible" click"toggleVisibility">点击隐藏/显示</text> <button v-on:click"incrementCount">点击…...
B028-JDBC基础
目录 什么是JDBCJDBC引入持久化JDBC规范 使用JDBC完成CRUDJDBC创建表JDBC CRUD和优化 DAO层的实现 什么是JDBC JDBC引入 Java代码操作数据库的唯一技术:-- JDBC ( java database connection ) 持久化 持久化(persistence):把数据保存到可掉电式存储设…...
ngixn 准备
确认yum可用,确认防火墙,确认SELinux 一项安装 yum -y install gcc make automake pcre-devel zlib zlib-devel openssl openssl-devel参数: gcc:编译依赖gcc环境 pcre:PCRE(Perl Compatible Regular Expressions)是一…...
生活小记录
上个月项目总算上线了,节奏也慢慢调整正常。发现自己好久没有记录生活点滴了,正好写写。其实,最近这段日子发生的事情还是挺多的。 流感 媳妇11.24得流感,这件事情特别好笑,大晚上她和我妹妹想喝酒试试,结…...
Diary22-全网最全的CSS3.0讲解
CSS学习 1.认识CSS 1.1什么是CSS CSS:Cascading Style Sheet——层叠级联样式表 CSS:表现(美化网页) 字体;颜色;边距;高度;宽度;背景图片;网页定位&…...
LAMP和分离式LNMP部署
目录 一.什么是LAMP? 二.安装LAMP 先安装apache,httpd网页服务: 接着安装mysql: 安装php: 创建论坛: 三.安装分布式LNMP: 先安装nginx: 到另一台主机安装php: …...
基于Java房屋租赁管理系统
基于Java房屋租赁管理系统 功能需求 1、房源信息管理:系统需要能够记录和管理所有房源的详细信息,包括房屋地址、房屋面积、租金、付款方式、房屋类型等。管理员应该可以添加、编辑和删除房源信息。 2、租户信息管理:系统需要能够记录和管…...
windows安装protoc、protoc-gen-go、protoc-gen-go-grpc
文章目录 一、 protoc二、protoc-gen-go三、protoc-gen-go-grpc 一、 protoc 1,下载:https://github.com/google/protobuf/releases 下载对应的protoc,注意选择windows 2,下好之后解压就行,然后把bin目录加入到环境…...
macOS 获取文件夹大小
macOS 获取文件夹大小 获取文件夹大小的扩展如下: extension URL {var fileSize: Int? { // in bytesdo {let val try self.resourceValues(forKeys: [.totalFileAllocatedSizeKey, .fileAllocatedSizeKey])return val.totalFileAllocatedSize ?? val.fileAll…...
有哪些AI论文软件是真的适配学科专业,而不是模板套话?
在 AI 写作技术迅猛发展的今天,各类论文工具层出不穷,看似能快速完成写作任务,实则多数是内容空洞、逻辑混乱、格式随意的“模板复制器”,生成的文章缺乏专业深度,充斥着机械化的表达方式。真正具备学术价值的 AI 论文…...
Rshell框架实战:红队内网渗透的信道管理与双平台协同
1. 这不是“教你怎么黑”,而是还原一次真实红队作业的完整切片Rshell框架——这个名字在渗透测试圈子里不算陌生,但真正把它用透、用稳、用出生产级效果的人,远比想象中少。我见过太多人把Rshell当成一个“带图形界面的msfvenomnc组合包”&am…...
Windows 11系统优化架构深度解析:Win11Debloat模块化设计与企业级部署方案
Windows 11系统优化架构深度解析:Win11Debloat模块化设计与企业级部署方案 【免费下载链接】Win11Debloat A simple, lightweight PowerShell script that allows you to remove pre-installed apps, disable telemetry, as well as perform various other changes …...
2026年转型风口:理发店转战植物染发,能占据市场前10%吗?
2026年,理发店转型的风口已经悄然来临。据数据显示,植物染发和养护市场增速保持在15%以上,而白发脱发人群的比例不断增大,这无疑给众多理发店提供了巨大的转型机会。本文将通过具体的数据、案例和观点,探讨理发店转型植…...
3个颠覆性技巧:重新定义现代界面字体的选择标准
3个颠覆性技巧:重新定义现代界面字体的选择标准 【免费下载链接】source-sans Sans serif font family for user interface environments 项目地址: https://gitcode.com/gh_mirrors/so/source-sans 你是否曾为网页上的文字不够清晰而烦恼?或是发…...
8通道采集控制终端:工业物联网边缘智能的核心硬件解析
1. 项目概述:从“通道”到“终端”的工业物联进化最近在调试一个老旧产线的数据采集项目,现场一堆4-20mA的传感器、干接点的报警信号,还有几个需要远程启停的电机,线缆接得跟蜘蛛网一样。甲方负责人看着头疼,问我有没有…...
Uptane OTA入门(3):Primary 与 Secondary ECU——汽车里的更新“主从“架构
一、一辆汽车里有多少个"电脑"? 现代汽车早已不是简单的机械装置,而是一个移动的计算中心。 惊人的数字车型级别ECU 数量代码行数经济型轿车30-50 个1 亿行中高端轿车50-80 个1.5 亿行豪华/电动车80-150 个2 亿行对比:一架波音 787…...
量子优化新突破:虚时间演化高效求解QUBO问题
1. 量子优化新范式:模拟虚时间演化解决QUBO问题在金融投资组合优化、物流路径规划和机器学习特征选择等领域,二次无约束二进制优化(QUBO)问题无处不在。这类NP难问题随着规模扩大,求解难度呈指数级增长,传统…...
基于STM32H750XBH6开发板调试LwIP裸机程序
目录 1 前言 2 正点原子STM32H750XBH6阿波罗开发板介绍 3 配置和调试 3.1 CubeMX配置 3.2 代码修改 1 前言 LwIP 是物联网 / 嵌入式领域使用最广的开源 精简版TCP/IP 协议栈,STM32、ESP32、国产 MCU 全都用它,对于嵌入式 / 物联网初学者来说,亲手调试 LwIP 裸机程序(无操作…...
AI术语速查卡:50个高频词的实战解读与避坑指南
1. 这不是词典,是AI时代的生存速查卡你有没有过这种体验:刚打开一篇AI技术文章,三句话里冒出“transformer”“fine-tuning”“latent space”——每个词都像蒙着雾的玻璃窗,看得见轮廓,摸不着边界?开会时同…...
