go语言学习文档精简版

Go语言是一门开源的编程语言,目的在于降低构建简单、可靠、高效软件的门槛。Go平衡了底层系统语言的能力,以及在现代语言中所见到的高级特性。
你好,Go
package main // 程序组织成包import "fmt" // fmt包用于格式化输出数据// 主函数入口
func main() {// 输出语句fmt.Printf("hello world")
}
如果你没有本地的Go语言环境,可以通过浏览器在线方式学习: https://go.dev/play/
一、数据类型
1.1 变量
Go语言是一种静态类型的编程语言。
可以通过 var 声明一个或多个变量
var str = "apple"
也可以通过 := 语法来进行初始化变量的简写
str := "apple"
以上两种创建方式应用代码如下:
package mainimport "fmt"func main() {var a = "saycode" // 字符串fmt.Println(a)var b, c int = 1, 2 // 整型fmt.Println(b, c)var d = true // 布尔型fmt.Println(d)var e int // 声明变量类型为 intfmt.Println(e)// 简化方式f := "apple" // 字符串fmt.Println(f)g := true // 布尔型fmt.Println(g)
}
可以在同一行内创建多个变量
多行创建
name := "saycode"
age := 10
同行创建
package mainimport "fmt"func main() {name, age := "saycode", 10fmt.Println(name, age)
}
1.2 常量
常量是可不变的值,Go语言支持字符、字符串、布尔值和数字值的常量。
使用 const 关键字声明
错误案例
运行当前程序发现报错cannot assign to name (untyped string constant "I Like Go"),也就证实了,常量进行初始化值后,是不可以进行改变的。
package mainimport "fmt"func main() {const name := "I Like Go"name = "I Like Java"fmt.Println(name)
}
正确案例
将π作为常量进行声明,接着去计算出圆的面积。
package mainimport "fmt"const PI = 3.14func main() {// 计算圆的面积const r = 2const area = PI * r * rfmt.Println(area)
}
二、格式化输出
2.1 默认方式
如果不确定要用什么,可以直接使用%v (最好使用特定)
fmt.Printf("我今年 %v 岁", 20)
// 我今年 20 岁
fmt.Printf("我叫 %v", "张三")
// 我叫 张三
2.2 字符串
当需要特定插入字符串时,可使用 %s
fmt.Printf("我叫 %s", "张三")
2.3 十进制整数
当需要特定插入十进制整数时,可使用%d
fmt.Printf("我今年 %d 岁", 10)
// 我今年 10岁
2.4 浮点数
当需要插入浮点数时,可使用 %f
.数字f (.2f),含义就是保留小数点后两位
fmt.Printf("我今年 %f 岁", 10.22)
// 我今年 10.220000岁
fmt.Printf("我今年 %.2f 岁", 10.22)
// 我今年 10.22岁
2.5 变量类型
当需要查看当前变量类型时,可使用%T
package mainimport "fmt"func main() {num := 10fmt.Printf("num类型为 %T", num)
}
三、选择结构
3.1 条件判断
if语句是一种用于判断条件的结构,他将根据布尔表达式,结果就是 (true 或 false)的结果来决定是否执行某段代码。
else 是不满足前一个 if 后去执行的代码块。
如下代码就是判断 x > 5(布尔表达式), 如果大于则执行"x大于5",否则执行 "x小于或等于5"
if x > 5 {fmt.Println("x大于5")
} else {fmt.Println("x小于或等于5")
}
3.2 if的嵌套
可以通过嵌套的方式去判断多个值
if x > 5 {fmt.Println("x大于5")
} else if x < 5 {fmt.Println("x小于5")
} else {fmt.Println("x等于5")
}
if语句可以有初始化语句,初始化语句中创建的变量只在if语句块中使用。
以下代码是通过getLength方法去获取email字符串的长度,在去对长度进行判断大小是否小于1。
package mainimport "fmt"func main() {email := "nazhanpeng@163.com"// 语法糖创建if length := getLength(email); length < 1 {fmt.Println("邮箱长度小于1")} else {fmt.Println("邮箱没问题")}}func getLength(a string) int {return len(a)
}
四、方法
一个基本的函数需要包含函数名、参数列表、返回值类型和函数体。
例如定义一个函数名为add的函数,包含两个参数a、b,返回值类型为int类型,函数体是a+b计算两个整数的和。
func add(a int, b int) int {return a + b
}
函数可以有0个或多个参数。
4.1 返回结果
一般用于去终止函数并返回结果。在Go中可以返回单个值或多个值。
单个值返回已经在上面返回了。
4.1.1 多个值返回
package mainimport "fmt"func divide(a int, b int) (int, int) {quotient := a / bremainder := a % breturn quotient, remainder
}func main() {q, r := divide(4, 3)fmt.Println(q,r)
}
4.1.2 命名返回值
命名返回值在函数代码块内为局部变量,可以进行使用。
package mainimport "fmt"func rectangleArea(width, height int) (area int) {area = width * heightreturn
}func main() {area := rectangleArea(5,6)fmt.Println("area", area)
}
4.1.3 空返回语句
可以使用空return返回结果
package mainimport "fmt"func swap(a, b int) (x, y int) {x = by = areturn
}func main() {x, y := swap(1,2)fmt.Println("x", y, "y", y)
}
4.1.4 按照值传递变量
意味着当一个变量传递给一个函数时,该函数收到的是该变量的副本。
我们发现x的值还是5,就说明函数无法去改变传递变量的值。
package mainimport "fmt"func main() {x := 5increment(x)fmt.Println("x=", x)}func increment(x int) {x++
}
明天继续更新,请关注我
相关文章:
go语言学习文档精简版
Go语言是一门开源的编程语言,目的在于降低构建简单、可靠、高效软件的门槛。Go平衡了底层系统语言的能力,以及在现代语言中所见到的高级特性。 你好,Go package main // 程序组织成包import "fmt" // fmt包用于格式化输出数据// …...
立元科技-Java面经
面试时间:2024年2月13日 面试地点:线下 面试流程:一轮面试 首先写了点笔试题,但是人家根本不看(这个也就一面) (聊的还行,但是公司环境不是特别的好,一次面试&#x…...
OpenGL入门第六步:材质
目录 结果显示 材质介绍 函数解析 具体代码 结果显示 材质介绍 当描述一个表面时,我们可以分别为三个光照分量定义一个材质颜色(Material Color):环境光照(Ambient Lighting)、漫反射光照(Diffuse Lighting)和镜面光照(Specular Lighting)。通过为每个分量指定一个颜色,…...
新版SpringSecurity5.x使用与配置
目录 一、了解SpringSecurity 1.1 什么是Spring Security? 1.2 Spring Security功能 1.3 Spring Security原理 1.4 RABC (Role-Based Access Control) 二、SpringSecurity简单案例 2.1 引入SpringSecurity依赖 2.2 创建一个简单的Controller 三、SpringSecu…...
JavaScript实战 - JavaScript 中实现线程锁
作者:逍遥Sean 简介:一个主修Java的Web网站\游戏服务器后端开发者 主页:https://blog.csdn.net/Ureliable 觉得博主文章不错的话,可以三连支持一下~ 如有需要我的支持,请私信或评论留言! 前言: …...
基于PaddleClas的人物年龄分类项目
目录 一、任务概述 二、算法研发 2.1 下载数据集 2.2 数据集预处理 2.3 安装PaddleClas套件 2.4 算法训练 2.5 静态图导出 2.6 静态图推理 三、小结 一、任务概述 最近遇到个需求,需要将图像中的人物区分为成人和小孩,这是一个典型的二分类问题…...
20240725java的Controller、DAO、DO、Mapper、Service层、反射、AOP注解等内容的学习
在Java开发中,controller、dao、do、mapper等概念通常与MVC(Model-View-Controller)架构和分层设计相关。这些概念各自承担着不同的职责,共同协作以构建和运行一个应用程序。以下是这些概念的解释:…...
dynslam的安装
1. 安装opencv 2.4.9 下载opencv2.4.9 apt-get install build-essential apt-get install libgtk2.0-dev libavcodec-dev libavformat-dev libtiff4-dev libswscale-dev libjasper-dev apt-get install cmake apt-get install pkg-config 进入安装包文件: m…...
stats 监控 macOS 系统
Stats 监控 macOS 系统 CPU 利用率GPU 利用率内存使用情况磁盘利用率网络使用情况电池电量 brew install stats参考 stats github...
后端面试题日常练-day05 【Java基础】
题目 希望这些选择题能够帮助您进行后端面试的准备,答案在文末 在Java中,以下哪个关键字用于表示方法重写(Override)? a) override b) overrule c) overwrite d) supercede Java中的HashMap和Hashtable有什么区别&am…...
mac|安装PostgreSQL
1、官网下载:EDB: Open-Source, Enterprise Postgres Database Management 选择需要的版本: 双击得到的.dmg文件 双击,弹窗选择打开,一路next,然后输入你要设置的密码,默认账号名字为:postgres…...
内网对抗-隧道技术篇防火墙组策略FRPNPSChiselSocks代理端口映射C2上线
知识点: 1、隧道技术篇-传输层-工具项目-Frp&Nps&Chisel 2、隧道技术篇-传输层-端口转发&Socks建立&C2上线Frp Frp是专注于内网穿透的高性能的反向代理应用,支持TCP、UDP、HTTP、HTTPS等多种协议。可以将内网服务以安全、便捷的方式通过…...
arinc664总线协议
AFDX总线协议简介 (1)AFDX的传输速率高:带宽100MHZ,远远高于其他的类型的航空总线。(2)AFDX网络的鲁棒性高:AFDX的双冗余备份网络可以在某一个网络出现故障时,仍能正常通讯。 其中…...
UNIX 域协议
1. UNIX域协议 利用socket编程接口实现本地进程间通信 UNIX域协议套接字:可以使用TCP,也可以使用UDP SOCK_STREAM -----> TCP 面向字节流 SOCK_DGRAM -----> UDP 面向数据报 UNIX域协议并不是一个实际的协议族,而是在单个主机上执…...
昇思25天学习打卡营第17天|LLM-基于MindSpore的GPT2文本摘要
打卡 目录 打卡 环境准备 准备阶段 数据加载与预处理 BertTokenizer 部分输出 模型构建 gpt2模型结构输出 训练流程 部分输出 部分输出2(减少训练数据) 推理流程 环境准备 pip install -i https://pypi.mirrors.ustc.edu.cn/simple mindspo…...
Clion开发STM32——移植FreeModbus
STM32型号 :STM32H743VIT6 FreeModbus版本 :1.6 使用工具:stm32cubeMX,Clion 使用STM32作从机,模式:RTU 网上用keil的比较多,用Clion的比较少,如果你也用Clion,那么希望…...
c++栈笔记
一种常见的数据结构,遵循后进先出,先进后出的原则。地址不连续,栈顶(top) 1.常见函数 stack<int> s;定义一个参数类型为int 的栈 名为ss.push()向栈中插入元素s.emplace()压栈,无返回值s.pop()删除…...
Oracle配置TCPS加密协议测试
文章目录 一、环境信息二、配置过程1.创建证书2.监听配置2.1.配置sqlnet.ora2.2.配置listener.ora文件2.3.配置tnsnames.ora文件2.4.重载监听 3.数据库本地测试3.1. tcps登录测试3.2.日志监控 一、环境信息 操作系统:Linux 版本信息:Oracle 19c 参考文档…...
Jetpack Compose 通过 OkHttp 发送 HTTP 请求的示例
下面是一个使用 Kotlin 和 Jetpack Compose 来演示通过 OkHttp 发送 HTTP 请求的示例。这个示例包括在 Jetpack Compose 中发送一个 GET 请求和一个 POST 请求,并显示结果。 添加okhttp依赖 首先,在你的 build.gradle.kts 文件中添加必要的依赖…...
Pytorch使用教学3-特殊张量的创建与类型转化
1 特殊张量的创建 与numpy类似,PyTorch中的张量也有很多特殊创建的形式。 zeros:全0张量 # 形状为2行3列 torch.zeros([2, 3]) # tensor([[0., 0., 0.], # [0., 0., 0.]])ones:全1张量 # 形状为2行3列 torch.ones([2, 3]) # tensor([[1., 1., 1.], # …...
【网络】每天掌握一个Linux命令 - iftop
在Linux系统中,iftop是网络管理的得力助手,能实时监控网络流量、连接情况等,帮助排查网络异常。接下来从多方面详细介绍它。 目录 【网络】每天掌握一个Linux命令 - iftop工具概述安装方式核心功能基础用法进阶操作实战案例面试题场景生产场景…...
Linux链表操作全解析
Linux C语言链表深度解析与实战技巧 一、链表基础概念与内核链表优势1.1 为什么使用链表?1.2 Linux 内核链表与用户态链表的区别 二、内核链表结构与宏解析常用宏/函数 三、内核链表的优点四、用户态链表示例五、双向循环链表在内核中的实现优势5.1 插入效率5.2 安全…...
【CSS position 属性】static、relative、fixed、absolute 、sticky详细介绍,多层嵌套定位示例
文章目录 ★ position 的五种类型及基本用法 ★ 一、position 属性概述 二、position 的五种类型详解(初学者版) 1. static(默认值) 2. relative(相对定位) 3. absolute(绝对定位) 4. fixed(固定定位) 5. sticky(粘性定位) 三、定位元素的层级关系(z-i…...
MySQL 8.0 OCP 英文题库解析(十三)
Oracle 为庆祝 MySQL 30 周年,截止到 2025.07.31 之前。所有人均可以免费考取原价245美元的MySQL OCP 认证。 从今天开始,将英文题库免费公布出来,并进行解析,帮助大家在一个月之内轻松通过OCP认证。 本期公布试题111~120 试题1…...
QT: `long long` 类型转换为 `QString` 2025.6.5
在 Qt 中,将 long long 类型转换为 QString 可以通过以下两种常用方法实现: 方法 1:使用 QString::number() 直接调用 QString 的静态方法 number(),将数值转换为字符串: long long value 1234567890123456789LL; …...
【C++从零实现Json-Rpc框架】第六弹 —— 服务端模块划分
一、项目背景回顾 前五弹完成了Json-Rpc协议解析、请求处理、客户端调用等基础模块搭建。 本弹重点聚焦于服务端的模块划分与架构设计,提升代码结构的可维护性与扩展性。 二、服务端模块设计目标 高内聚低耦合:各模块职责清晰,便于独立开发…...
【学习笔记】深入理解Java虚拟机学习笔记——第4章 虚拟机性能监控,故障处理工具
第2章 虚拟机性能监控,故障处理工具 4.1 概述 略 4.2 基础故障处理工具 4.2.1 jps:虚拟机进程状况工具 命令:jps [options] [hostid] 功能:本地虚拟机进程显示进程ID(与ps相同),可同时显示主类&#x…...
JAVA后端开发——多租户
数据隔离是多租户系统中的核心概念,确保一个租户(在这个系统中可能是一个公司或一个独立的客户)的数据对其他租户是不可见的。在 RuoYi 框架(您当前项目所使用的基础框架)中,这通常是通过在数据表中增加一个…...
Xen Server服务器释放磁盘空间
disk.sh #!/bin/bashcd /run/sr-mount/e54f0646-ae11-0457-b64f-eba4673b824c # 全部虚拟机物理磁盘文件存储 a$(ls -l | awk {print $NF} | cut -d. -f1) # 使用中的虚拟机物理磁盘文件 b$(xe vm-disk-list --multiple | grep uuid | awk {print $NF})printf "%s\n"…...
CSS设置元素的宽度根据其内容自动调整
width: fit-content 是 CSS 中的一个属性值,用于设置元素的宽度根据其内容自动调整,确保宽度刚好容纳内容而不会超出。 效果对比 默认情况(width: auto): 块级元素(如 <div>)会占满父容器…...
