当前位置: 首页 > news >正文

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布尔型,值为truefalsefalse
uint88位无符号整型,取值范围为0到2550
uint1616位无符号整型,取值范围为0到655350
uint3232位无符号整型,取值范围为0到42949672950
uint64/uint64位无符号整型,取值范围为0到42949672950
int88位有符号整型,取值范围为-128到1270
int1616位有符号整型,取值范围为-32768到327670
int3232位有符号整型,取值范围为-2147483648到21474836470
int64/int64位有符号整型,取值范围为-9223372036854775808到92233720368547758070
float3232位浮点型,可以表示小数,精度为7位小数0
float6464位浮点型,可以表示小数,精度为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下载地址&#xff1a;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 操作&#xff0c;是用来批量发送请求&#xff0c;或者理解为批量操作的。 支持4种操作 bulk 支持多种操作&#xff0c;如下create、index、update、delete。 create 如果文档不存在就创建&#xff0c;但如果文档存在就返回错误index 如果文档不存在就创建&#x…...

LCR 176.判断是否为平衡二叉树

​​题目来源&#xff1a; leetcode题目&#xff0c;网址&#xff1a;LCR 176. 判断是否为平衡二叉树 - 力扣&#xff08;LeetCode&#xff09; 解题思路&#xff1a; 若树中任意节点左子树是平衡二叉树&#xff0c;右子树是平衡二叉树 且该节点左右子树平衡&#xff0c;则该树…...

跨境商城源码有哪些独特的功能和优势

1. 强大的跨境支付功能 跨境商城源码具备强大的跨境支付功能&#xff0c;支持多种支付方式&#xff0c;包括信用卡、支付宝、微信支付等。该功能遵循国际支付标准&#xff0c;能够确保支付过程的安全性和可靠性&#xff0c;为用户提供便捷的跨境购物体验。 2. 多语言和多货币支…...

latex如何对.pdf格式的图片实现裁剪

目录 问题描述&#xff1a; 问题解决&#xff1a; 问题描述&#xff1a; 在使用draw.io进行绘图&#xff0c;导出的时候不知道为什么周围会有留白&#xff0c;比如下图&#xff1a; 在导入latex的时候&#xff0c;会因为两侧的留白导致整张图片缩小。 如果直接进行裁剪.pdf&a…...

windows10下 iperf3测试带宽

iperf3下载网址&#xff1a;iPerf - Download iPerf3 and original iPerf pre-compiled binaries 可以用来测试TCP以及UDP带宽质量 通俗来说是用来测试网速的 准备&#xff1a;两台设备 1. 根据自己的设备选择下载工具&#xff08;两台都要有&#xff0c;这里我用的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 设计模式的基本概念 模式&#xff1a;通俗的来说就是成功方案的复用。 架构模式从全局看待问题。设计模式…...

行业追踪,2023-10-16

自动复盘 2023-10-16 凡所有相&#xff0c;皆是虚妄。若见诸相非相&#xff0c;即见如来。 k 线图是最好的老师&#xff0c;每天持续发布板块的rps排名&#xff0c;追踪板块&#xff0c;板块来开仓&#xff0c;板块去清仓&#xff0c;丢弃自以为是的想法&#xff0c;板块去留让…...

ubuntu深度学习配置

1.删除旧cuca&#xff0c;旧显卡驱动 sudo apt-get --purge remove "*cublas*" "*cufft*" "*curand*" "*cusolver*" "*cusparse*" "*npp*" "*nvjpeg*" "cuda*" "nsight*" sudo…...

大数据flink篇之三-flink运行环境安装后续一yarn-session安装

前提&#xff1a; Hadoop 必須保证在 2.2 以上&#xff0c;且必須裝有 hdfs 服务。Hadoop安装后续会有相关说明。 具体的&#xff0c;在生产环境中&#xff0c;flink一般会交由yarn、k8s等资源管理平台来处理。本章主要讲解yarn模式下的session cluster模式。 flink Session-C…...

Chrome Extensions v3 迁移清单

一、前置问题 1.1为什么需要迁移 v3&#xff1f; Chrome 计划完全停止 v2 版本维护&#xff0c;后续 v2 版本将无法上架谷歌插件商店&#xff0c;除此之外&#xff0c;未来新版本 Chrome 对于 v2 版本插件的限制会越来越大&#xff0c;比如安全性限制 iframe 嵌套只能通过沙盒…...

TCP/IP(十二)TCP的确认、超时、重传机制

一 TCP的确认应答机制 确认应答机制: 每次收到数据 都会 给对端发送一个应答报文(ACK) ① 带重传的肯定确认 确认机制: 超时 重传的 肯定 确认 --> 完成了两个作用,或者说有两个含义1、肯定[正确] 确认小结&#xff1a; 我的确认信息是针对正确数据做确认,而不是错误…...

C/C++陷阱——临时变量的产生和特性

C/C陷阱——临时变量的产生和特性 在学习C常引用时&#xff0c;有这样一段代码引起了我的注意&#xff1a; int a 1; double& b a;当我编译这段代码时&#xff0c;竟然报错了&#xff1a; 按理来说&#xff0c;初始化引用时不能涉及权限的放大&#xff08;如用const in…...

【音视频|ALSA】SS528开发板编译Linux内核ALSA驱动、移植alsa-lib、采集与播放usb耳机声音

&#x1f601;博客主页&#x1f601;&#xff1a;&#x1f680;https://blog.csdn.net/wkd_007&#x1f680; &#x1f911;博客内容&#x1f911;&#xff1a;&#x1f36d;嵌入式开发、Linux、C语言、C、数据结构、音视频&#x1f36d; &#x1f923;本文内容&#x1f923;&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){…...

论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(二)

HoST框架核心实现方法详解 - 论文深度解读(第二部分) 《Learning Humanoid Standing-up Control across Diverse Postures》 系列文章: 论文深度解读 + 算法与代码分析(二) 作者机构: 上海AI Lab, 上海交通大学, 香港大学, 浙江大学, 香港中文大学 论文主题: 人形机器人…...

鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个医院挂号小程序

一、开发准备 ​​环境搭建​​&#xff1a; 安装DevEco Studio 3.0或更高版本配置HarmonyOS SDK申请开发者账号 ​​项目创建​​&#xff1a; File > New > Create Project > Application (选择"Empty Ability") 二、核心功能实现 1. 医院科室展示 /…...

鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个医院查看报告小程序

一、开发环境准备 ​​工具安装​​&#xff1a; 下载安装DevEco Studio 4.0&#xff08;支持HarmonyOS 5&#xff09;配置HarmonyOS SDK 5.0确保Node.js版本≥14 ​​项目初始化​​&#xff1a; ohpm init harmony/hospital-report-app 二、核心功能模块实现 1. 报告列表…...

NLP学习路线图(二十三):长短期记忆网络(LSTM)

在自然语言处理(NLP)领域,我们时刻面临着处理序列数据的核心挑战。无论是理解句子的结构、分析文本的情感,还是实现语言的翻译,都需要模型能够捕捉词语之间依时序产生的复杂依赖关系。传统的神经网络结构在处理这种序列依赖时显得力不从心,而循环神经网络(RNN) 曾被视为…...

UR 协作机器人「三剑客」:精密轻量担当(UR7e)、全能协作主力(UR12e)、重型任务专家(UR15)

UR协作机器人正以其卓越性能在现代制造业自动化中扮演重要角色。UR7e、UR12e和UR15通过创新技术和精准设计满足了不同行业的多样化需求。其中&#xff0c;UR15以其速度、精度及人工智能准备能力成为自动化领域的重要突破。UR7e和UR12e则在负载规格和市场定位上不断优化&#xf…...

智能仓储的未来:自动化、AI与数据分析如何重塑物流中心

当仓库学会“思考”&#xff0c;物流的终极形态正在诞生 想象这样的场景&#xff1a; 凌晨3点&#xff0c;某物流中心灯火通明却空无一人。AGV机器人集群根据实时订单动态规划路径&#xff1b;AI视觉系统在0.1秒内扫描包裹信息&#xff1b;数字孪生平台正模拟次日峰值流量压力…...

在WSL2的Ubuntu镜像中安装Docker

Docker官网链接: https://docs.docker.com/engine/install/ubuntu/ 1、运行以下命令卸载所有冲突的软件包&#xff1a; for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done2、设置Docker…...

使用LangGraph和LangSmith构建多智能体人工智能系统

现在&#xff0c;通过组合几个较小的子智能体来创建一个强大的人工智能智能体正成为一种趋势。但这也带来了一些挑战&#xff0c;比如减少幻觉、管理对话流程、在测试期间留意智能体的工作方式、允许人工介入以及评估其性能。你需要进行大量的反复试验。 在这篇博客〔原作者&a…...

RabbitMQ入门4.1.0版本(基于java、SpringBoot操作)

RabbitMQ 一、RabbitMQ概述 RabbitMQ RabbitMQ最初由LShift和CohesiveFT于2007年开发&#xff0c;后来由Pivotal Software Inc.&#xff08;现为VMware子公司&#xff09;接管。RabbitMQ 是一个开源的消息代理和队列服务器&#xff0c;用 Erlang 语言编写。广泛应用于各种分布…...

JS手写代码篇----使用Promise封装AJAX请求

15、使用Promise封装AJAX请求 promise就有reject和resolve了&#xff0c;就不必写成功和失败的回调函数了 const BASEURL ./手写ajax/test.jsonfunction promiseAjax() {return new Promise((resolve, reject) > {const xhr new XMLHttpRequest();xhr.open("get&quo…...