Golang基础学习笔记
Golang基础学习笔记
1、下载安装
1.1、下载
Golang下载地址:https://golang.google.cn/dl/
1.2、安装





1.3、环境变量
# GOPATH
D:\GolandProjects

# GOPROXY
https://mirrors.aliyun.com/goproxy

# 启用Go模块支持
go env -w GO111MODULE=on
1.5、验证安装/配置

1.5、hello world

2、变量/常量
2.1、变量
package mainimport "fmt"func main() {// var 变量名字 类型 = 表达式// 单个变量定义//var name string = "xumeng03!"//var name = "xumeng03!"//name := "xumeng03!"var name stringname = "xumeng03"fmt.Println("hello", name)// 多个变量定义//var name1, name2 = "xumeng", "xumeng03"var (name1 = "xumeng03"name2 = "xumeng")fmt.Println("hello", name1, name2)
}
2.2、常量
package mainimport "fmt"func main() {// const 变量名字 类型 = 表达式const name string="xumeng03"// 报错//name = "xumeng"//const name1 string//name1 = "aaa"fmt.Println("hello", name)
}
3、基本数据类型
3.1、基本类型
| 数据类型 | 类型解释 | 默认零值 |
|---|---|---|
| bool | 布尔型,值为true或false | false |
| uint8 | 8位无符号整型,取值范围为0到255 | 0 |
| uint16 | 16位无符号整型,取值范围为0到65535 | 0 |
| uint32 | 32位无符号整型,取值范围为0到4294967295 | 0 |
| uint64/uint | 64位无符号整型,取值范围为0到4294967295 | 0 |
| int8 | 8位有符号整型,取值范围为-128到127 | 0 |
| int16 | 16位有符号整型,取值范围为-32768到32767 | 0 |
| int32 | 32位有符号整型,取值范围为-2147483648到2147483647 | 0 |
| int64/int | 64位有符号整型,取值范围为-9223372036854775808到9223372036854775807 | 0 |
| float32 | 32位浮点型,可以表示小数,精度为7位小数 | 0 |
| float64 | 64位浮点型,可以表示小数,精度为15位小数 | 0 |
| string | 字符串类型,由一串Unicode码点组成 | “” |
package mainimport ("fmt""math""strconv"
)func main() {// boolvar vbool boolfmt.Printf("类型: %T,默认值: %t\n", vbool, vbool)// uint8、uint16、uint32、uint64(uint)var vuint uintvar vuint8 uint8var vuint16 uint16var vuint32 uint32var vuint64 uint64fmt.Printf("类型: %T,默认值: %d,最小值: %d,最大值: %d\n", vuint, vuint, 0, strconv.FormatUint(math.MaxUint, 10))fmt.Printf("类型: %T,默认值: %d,最小值: %d,最大值: %d\n", vuint8, vuint8, 0, math.MaxUint8)fmt.Printf("类型: %T,默认值: %d,最小值: %d,最大值: %d\n", vuint16, vuint16, 0, math.MaxUint16)fmt.Printf("类型: %T,默认值: %d,最小值: %d,最大值: %d\n", vuint32, vuint32, 0, math.MaxUint32)fmt.Printf("类型: %T,默认值: %d,最小值: %d,最大值: %d\n", vuint64, vuint64, 0, strconv.FormatUint(math.MaxUint64, 10))// int8、int16、int32、int64var vint intvar vint8 int8var vint16 int16var vint32 int32var vint64 int64fmt.Printf("类型: %T,默认值: %d,最小值: %d,最大值: %d\n", vint, vint, math.MinInt, math.MaxInt)fmt.Printf("类型: %T,默认值: %d,最小值: %d,最大值: %d\n", vint8, vint8, math.MinInt8, math.MaxInt8)fmt.Printf("类型: %T,默认值: %d,最小值: %d,最大值: %d\n", vint16, vint16, math.MinInt16, math.MaxInt16)fmt.Printf("类型: %T,默认值: %d,最小值: %d,最大值: %d\n", vint32, vint32, math.MinInt32, math.MaxInt32)fmt.Printf("类型: %T,默认值: %d,最小值: %d,最大值: %d\n", vint64, vint64, math.MinInt64, math.MaxInt64)// float32、float64var vfloat32 float32var vfloat64 float32fmt.Printf("类型: %T,默认值: %f\n", vfloat32, vfloat32)fmt.Printf("类型: %T,默认值: %f\n", vfloat64, vfloat64)// stringvar vstring stringfmt.Printf("类型: %T,默认值: %s\n", vstring, vstring)
}
3.2、基本类型转换
只有类型兼容的才可以转换!
package mainimport ("fmt"
)func main() {var vint8 int8var vint16 int16//vint16 = vint8;vint16 = int16(vint8);fmt.Printf("类型: %T,值: %d", vint16, vint16)// 大转小会有精度丢失问题//var vint8 int8//var vint16 int16 = 257//vint8 = int8(vint16)//fmt.Printf("类型: %T,值: %d", vint8, vint8)
}
4、复合数据类型
5、运算符
5.1、算数运算符
package mainimport ("fmt"
)func main() {a := 9b := 3fmt.Printf("%d + %d = %d\n", a, b, a+b)fmt.Printf("%d - %d = %d\n", a, b, a-b)fmt.Printf("%d * %d = %d\n", a, b, a*b)fmt.Printf("%d / %d = %d\n", a, b, a/b)fmt.Printf("%d %% %d = %d\n", a, b, a%b)c := 3c++fmt.Printf("%d\n", c)c--fmt.Printf("%d", c)
}
5.2、关系运算符
package mainimport ("fmt"
)func main() {a := 9b := 3c := 3fmt.Printf("%d > %d ? %t\n", a, b, a > b)fmt.Printf("%d < %d ? %t\n", a, b, a < b)fmt.Printf("%d == %d ? %t\n", a, b, a == b)fmt.Printf("%d >= %d ? %t\n", b, b, b >= c)fmt.Printf("%d <= %d ? %t\n", a, b, a <= b)fmt.Printf("%d != %d ? %t\n", b, b, b != c)
}
5.3、逻辑运算符
func main() {a := 9b := 3c := 3fmt.Printf("%b & %d = %b\n", a, b, b, c, a > b && b == c)fmt.Printf("%d < %d || %d == %d ? %t\n", a, b, b, c, a < b || b != c)
}
5.4、位运算符
package mainimport ("fmt"
)func main() {a := 9b := 3// 对应位均为1,才是1,否则为0fmt.Printf("%b & %b = %b\n", a, b, a&b)// 对应位均为0,才是0,否则为1fmt.Printf("%b | %b = %b\n\n", a, b, a|b)// 对应位值不同为1,否则为0fmt.Printf("%b ^ %b = %b\n", a, b, a^b)// 按位取反fmt.Printf("^%b = %b\n", a, ^a)// 对于b的值,如果为0,则取a对应位的值,否则取0fmt.Printf("%b &^ %b = %b\n", a, b, a&^b)// a=a*2^2a = a << 2fmt.Printf("9 << 2 = %b(%d)\n", a, a)// a=a/2a = a >> 1fmt.Printf("36 >> 1 = %b(%d)\n", a, a)
}
5.5、赋值运算符
package mainimport ("fmt"
)func main() {a := 9b := 3a += bfmt.Printf("9 + 3 = %d\n", a)a -= bfmt.Printf("12 - 3 = %d\n", a)
}
6、输入/输出
6.1、输出
| 方法 | 说明 |
|---|---|
fmt.Print | 将参数打印输出到标准输出,不进行格式化处理,参数之间用空格分隔 |
fmt.Println | 将参数打印输出到标准输出,不进行格式化处理,参数之间用空格分隔,并在最后添加换行符 |
fmt.Printf | 通过格式化字符串和参数进行输出。格式化字符串中可以包含占位符(例如%s、%d等),用于指定参数的格式和位置 |
fmt.Sprintf | 通过格式化字符串和参数生成一个格式化后的字符串,而不是直接打印输出。返回生成的字符串,可以赋值给变量或作为其他函数的参数 |
package mainimport "fmt"func main() {a := 11fmt.Printf("类型: %T,值: %d,二进制值 %b,八进制值 %o,十进制值 %d,十六进制值 %x,十六进制值 %X\n", a, a, a, a, a, a, a)b := "xumeng03"fmt.Printf("类型: %T,值: %s\n", b, b)c := 'A'fmt.Printf("类型: %T,值: %c\n", c, c)d := ""fmt.Printf("类型: %T,地址: %p\n", d, &d)
}
6.2、输入
| 方法 | 说明 |
|---|---|
fmt.Scan | 从标准输入中读取输入,并将解析后的值存储到指定的变量中。它需要传入指向变量的指针作为参数,并以空格为分隔符进行解析 |
fmt.Scanf | 从标准输入中按照指定的格式字符串读取输入,并将解析后的值存储到指定的变量中。 |
package mainimport ("fmt""strconv"
)func main() {//fmt.Print("请输入名称: ")//var a string//fmt.Scan(&a)//fmt.Println("hello", a+"!")fmt.Print("请输入名称、年龄: ")var a stringvar b int64fmt.Scanf("%s %d", &a, &b)fmt.Println("hello", a+" "+strconv.FormatInt(b, 10)+"!")
}
7、流程控制
7.1、判断语句
相关文章:
Golang基础学习笔记
Golang基础学习笔记 1、下载安装 1.1、下载 Golang下载地址:https://golang.google.cn/dl/ 1.2、安装 1.3、环境变量 # GOPATH D:\GolandProjects# GOPROXY https://mirrors.aliyun.com/goproxy# 启用Go模块支持 go env -w GO111MODULEon1.5、验证安装/配置 1.…...
ES _bulk 批量操作用法
es 的 bulk 操作,是用来批量发送请求,或者理解为批量操作的。 支持4种操作 bulk 支持多种操作,如下create、index、update、delete。 create 如果文档不存在就创建,但如果文档存在就返回错误index 如果文档不存在就创建&#x…...
LCR 176.判断是否为平衡二叉树
题目来源: leetcode题目,网址:LCR 176. 判断是否为平衡二叉树 - 力扣(LeetCode) 解题思路: 若树中任意节点左子树是平衡二叉树,右子树是平衡二叉树 且该节点左右子树平衡,则该树…...
跨境商城源码有哪些独特的功能和优势
1. 强大的跨境支付功能 跨境商城源码具备强大的跨境支付功能,支持多种支付方式,包括信用卡、支付宝、微信支付等。该功能遵循国际支付标准,能够确保支付过程的安全性和可靠性,为用户提供便捷的跨境购物体验。 2. 多语言和多货币支…...
latex如何对.pdf格式的图片实现裁剪
目录 问题描述: 问题解决: 问题描述: 在使用draw.io进行绘图,导出的时候不知道为什么周围会有留白,比如下图: 在导入latex的时候,会因为两侧的留白导致整张图片缩小。 如果直接进行裁剪.pdf&a…...
windows10下 iperf3测试带宽
iperf3下载网址:iPerf - Download iPerf3 and original iPerf pre-compiled binaries 可以用来测试TCP以及UDP带宽质量 通俗来说是用来测试网速的 准备:两台设备 1. 根据自己的设备选择下载工具(两台都要有,这里我用的Window…...
Stratasys F170 3D打印教程
目录 0. 引言1. 3D打印技术1.1 3D 打印概述1.2 3D打印成型技术的工艺1.3 3D打印材料2. Stratasys F170 3D打印机2.1 Stratasys F170 特点及使用说明3. 打印步骤3.1 导出加工模型3.2 导入模型到GrabCAD Print3.2.1 GrabCAD Print 基本操作步骤4. 常见问题及解决方案参考文献0. 引…...
以太坊 CALL 数据解析【ETH】
文章目录 前言代码前言 当我们通过 jsonrpc CALL 获取到数据时,不可读,怎么办? 这里直接给大家一个工具类 代码 package trace// author JavaPub shiyuwangimport ("encoding/json""fmt""io/ioutil""net/http""strings&qu…...
Xilinx IP 10G Ethernet PCS/PMA IP Core
Vivado 10G Ethernet PCS/PMA介绍 1介绍 完整的10G以太网接口如下图,分为10G PHY和10G MAC两部分。 这篇文章重点讲 10G Ethernet PCS/PMA。 2 IP的基本介绍 10G以太网物理编码子层/物理介质连接(PCS/PMA)核心在Xilinx 10G以太网介质访问控制器(MAC)核心和具有10Gb/s…...
软件设计师_面向对象_学习笔记
文章目录 1 面向对象基本概念2 设计模式3 UML4 设计模式4.1 设计模式的基本概念4.2 设计模式的分类4.3 创建型模式 1 面向对象基本概念 2 设计模式 3 UML 4 设计模式 4.1 设计模式的基本概念 模式:通俗的来说就是成功方案的复用。 架构模式从全局看待问题。设计模式…...
行业追踪,2023-10-16
自动复盘 2023-10-16 凡所有相,皆是虚妄。若见诸相非相,即见如来。 k 线图是最好的老师,每天持续发布板块的rps排名,追踪板块,板块来开仓,板块去清仓,丢弃自以为是的想法,板块去留让…...
ubuntu深度学习配置
1.删除旧cuca,旧显卡驱动 sudo apt-get --purge remove "*cublas*" "*cufft*" "*curand*" "*cusolver*" "*cusparse*" "*npp*" "*nvjpeg*" "cuda*" "nsight*" sudo…...
大数据flink篇之三-flink运行环境安装后续一yarn-session安装
前提: Hadoop 必須保证在 2.2 以上,且必須裝有 hdfs 服务。Hadoop安装后续会有相关说明。 具体的,在生产环境中,flink一般会交由yarn、k8s等资源管理平台来处理。本章主要讲解yarn模式下的session cluster模式。 flink Session-C…...
Chrome Extensions v3 迁移清单
一、前置问题 1.1为什么需要迁移 v3? Chrome 计划完全停止 v2 版本维护,后续 v2 版本将无法上架谷歌插件商店,除此之外,未来新版本 Chrome 对于 v2 版本插件的限制会越来越大,比如安全性限制 iframe 嵌套只能通过沙盒…...
TCP/IP(十二)TCP的确认、超时、重传机制
一 TCP的确认应答机制 确认应答机制: 每次收到数据 都会 给对端发送一个应答报文(ACK) ① 带重传的肯定确认 确认机制: 超时 重传的 肯定 确认 --> 完成了两个作用,或者说有两个含义1、肯定[正确] 确认小结: 我的确认信息是针对正确数据做确认,而不是错误…...
C/C++陷阱——临时变量的产生和特性
C/C陷阱——临时变量的产生和特性 在学习C常引用时,有这样一段代码引起了我的注意: int a 1; double& b a;当我编译这段代码时,竟然报错了: 按理来说,初始化引用时不能涉及权限的放大(如用const in…...
【音视频|ALSA】SS528开发板编译Linux内核ALSA驱动、移植alsa-lib、采集与播放usb耳机声音
😁博客主页😁:🚀https://blog.csdn.net/wkd_007🚀 🤑博客内容🤑:🍭嵌入式开发、Linux、C语言、C、数据结构、音视频🍭 🤣本文内容🤣&a…...
C/C++基础讲解(一百三十一)之经典篇(信息合并/平均分数存储)
C/C++基础讲解(一百三十一)之经典篇(信息合并/平均分数存储) 程序之美 前言 很多时候,特别是刚步入大学的学子们,对于刚刚开展的计算机课程基本上是一团迷雾,想要弄明白其中的奥秘,真的要花费一些功夫,我和大家一样都是这么啃过来的,从不知到知知,懵懂到入门,每一步…...
【ROS】使用vscode浏览navigation2源码时,提示:没有那个文件或目录
【ROS】郭老二博文之:ROS目录 1、问题描述 使用vscode浏览navigation2源码时,头文件下面有波浪线,并提示:没有那个文件或目录。比如没有:geometry_msgs/msg/polygon.h 错误信息: 无法打开源文件 “geometry_msgs/msg/polygon.h” (dependency of “nav2_controller/co…...
ARM-day9作业
main.c: #include "uart.h"#include "key_it.h"int main(){char c;char *s;uart4_init(); //串口初始化//中断初始化key_it_config();key3_it_config();//完成GPIO相关初始化all_led_init();//风扇初始化fs_init();//蜂鸣器初始化fmq_init();while(1){…...
QT项目实战:zlib数据压缩与解压缩的集成与应用
1. 为什么QT项目需要zlib数据压缩 在开发QT应用程序时,我们经常会遇到需要处理大量数据的场景。比如网络传输中的文件发送、本地日志文件的存储、或者游戏资源包的打包。这时候数据压缩就显得尤为重要了。zlib作为一个轻量级的高效压缩库,可以帮助我们将…...
解决VSCode远程连接卡在‘Waiting for server log...‘的兼容性问题
1. 问题现象与初步排查 最近在给客户部署远程开发环境时,遇到了一个典型问题:使用VSCode通过SSH连接CentOS 7服务器时,界面一直卡在"Waiting for server log..."状态。这个现象特别常见于使用老旧Linux发行版的开发环境,…...
三相LCL型并网逆变器:电容电流反馈与全前馈电网电压控制策略研究,谐波THD优化至5%以下的相...
三相lcl型并网逆变器控制策略 电容电流反馈和电网电压全前馈,加入5.7.11.13次谐波thd<5。 相关方面电力电气工程,电子信息工程等等都可以。最近在调试三相LCL并网逆变器时发现个有意思的现象:当电网背景谐波严重时,常规…...
避坑指南:自制NeuS数据集时COLMAP参数怎么选?实测SIMPLE_PINHOLE与PINHOLE差异
NeuS三维重建实战:COLMAP相机模型选择与参数优化全解析 当你第一次看到NeuS生成的3D模型表面出现诡异扭曲,或是重建结果丢失关键细节时,很可能问题就出在数据预处理环节——特别是COLMAP相机参数配置这个容易被忽视的步骤。作为隐式表面重建领…...
PyTorch版本冲突?手把手教你用conda解决torch和torchvision依赖问题(附常见错误排查)
PyTorch版本冲突?手把手教你用conda解决torch和torchvision依赖问题(附常见错误排查) 深度学习开发中,PyTorch环境的配置往往是项目启动的第一道门槛。许多开发者在安装torch和torchvision时都遇到过令人头疼的版本冲突问题——明…...
不只是 Copilot:一个完整 AI 软件交付团队的实践 - iforgeAI - 用更少的Tokens,办大事
在实际的软件开发过程中,一个完整的交付往往不是“写代码”这么简单。 从需求分析、架构设计、数据库建模,到 UI 设计、开发实现、测试与部署,每一个阶段都依赖不同角色的协作。 问题在于: 角色之间信息断层严重 文档不统一、不…...
避坑指南:Ubuntu交叉编译工具链安装中的5个常见错误及解决方法
Ubuntu交叉编译工具链安装避坑实战:从环境配置到疑难解析 在嵌入式开发领域,交叉编译工具链的配置往往是项目启动的第一道门槛。许多开发者都有过这样的经历:按照教程一步步操作,却在最后一步arm-linux-gnueabihf-gcc -v验证时遭遇…...
蚕豆剥豆机设计(机械原理设计)【设计说明书+机构简图+SW三维+stp通用格式+运动仿真】 备注:此份资料没有CAD装配
蚕豆剥豆机作为农业机械化的重要工具,其核心作用在于通过机械结构替代人工操作,显著提升剥豆效率并降低劳动强度。其设计需综合考量豆荚的物理特性、剥壳力传递路径及豆粒完整性保护等关键因素。机械原理设计以连杆机构、凸轮机构及夹持机构为基础&#…...
Python+Cartopy实战:用MODIS数据绘制全球气溶胶热力图(附完整代码)
PythonCartopy实战:用MODIS数据绘制全球气溶胶热力图(附完整代码) 当我们需要分析全球气溶胶分布时,卫星遥感数据提供了最全面的视角。MODIS(中分辨率成像光谱仪)作为NASA的重要观测工具,每天都…...
【Cuvil编译器生产级AI推理落地指南】:20年编译器老兵亲授Python模型从PyTorch到裸金属推理的7大避坑红线
第一章:Cuvil编译器在Python AI推理中的应用Cuvil 是一款面向AI工作负载的轻量级领域专用编译器,专为优化Python生态中基于NumPy、Torch和ONNX的推理流程而设计。它不依赖传统JIT或解释器层,而是通过静态图提取、张量算子融合与硬件感知调度&…...
