当前位置: 首页 > 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){…...

Xshell远程连接Kali(默认 | 私钥)Note版

前言:xshell远程连接&#xff0c;私钥连接和常规默认连接 任务一 开启ssh服务 service ssh status //查看ssh服务状态 service ssh start //开启ssh服务 update-rc.d ssh enable //开启自启动ssh服务 任务二 修改配置文件 vi /etc/ssh/ssh_config //第一…...

【JVM】- 内存结构

引言 JVM&#xff1a;Java Virtual Machine 定义&#xff1a;Java虚拟机&#xff0c;Java二进制字节码的运行环境好处&#xff1a; 一次编写&#xff0c;到处运行自动内存管理&#xff0c;垃圾回收的功能数组下标越界检查&#xff08;会抛异常&#xff0c;不会覆盖到其他代码…...

大数据零基础学习day1之环境准备和大数据初步理解

学习大数据会使用到多台Linux服务器。 一、环境准备 1、VMware 基于VMware构建Linux虚拟机 是大数据从业者或者IT从业者的必备技能之一也是成本低廉的方案 所以VMware虚拟机方案是必须要学习的。 &#xff08;1&#xff09;设置网关 打开VMware虚拟机&#xff0c;点击编辑…...

React Native在HarmonyOS 5.0阅读类应用开发中的实践

一、技术选型背景 随着HarmonyOS 5.0对Web兼容层的增强&#xff0c;React Native作为跨平台框架可通过重新编译ArkTS组件实现85%以上的代码复用率。阅读类应用具有UI复杂度低、数据流清晰的特点。 二、核心实现方案 1. 环境配置 &#xff08;1&#xff09;使用React Native…...

postgresql|数据库|只读用户的创建和删除(备忘)

CREATE USER read_only WITH PASSWORD 密码 -- 连接到xxx数据库 \c xxx -- 授予对xxx数据库的只读权限 GRANT CONNECT ON DATABASE xxx TO read_only; GRANT USAGE ON SCHEMA public TO read_only; GRANT SELECT ON ALL TABLES IN SCHEMA public TO read_only; GRANT EXECUTE O…...

sqlserver 根据指定字符 解析拼接字符串

DECLARE LotNo NVARCHAR(50)A,B,C DECLARE xml XML ( SELECT <x> REPLACE(LotNo, ,, </x><x>) </x> ) DECLARE ErrorCode NVARCHAR(50) -- 提取 XML 中的值 SELECT value x.value(., VARCHAR(MAX))…...

Linux --进程控制

本文从以下五个方面来初步认识进程控制&#xff1a; 目录 进程创建 进程终止 进程等待 进程替换 模拟实现一个微型shell 进程创建 在Linux系统中我们可以在一个进程使用系统调用fork()来创建子进程&#xff0c;创建出来的进程就是子进程&#xff0c;原来的进程为父进程。…...

MySQL 部分重点知识篇

一、数据库对象 1. 主键 定义 &#xff1a;主键是用于唯一标识表中每一行记录的字段或字段组合。它具有唯一性和非空性特点。 作用 &#xff1a;确保数据的完整性&#xff0c;便于数据的查询和管理。 示例 &#xff1a;在学生信息表中&#xff0c;学号可以作为主键&#xff…...

Bean 作用域有哪些?如何答出技术深度?

导语&#xff1a; Spring 面试绕不开 Bean 的作用域问题&#xff0c;这是面试官考察候选人对 Spring 框架理解深度的常见方式。本文将围绕“Spring 中的 Bean 作用域”展开&#xff0c;结合典型面试题及实战场景&#xff0c;帮你厘清重点&#xff0c;打破模板式回答&#xff0c…...

OD 算法题 B卷【正整数到Excel编号之间的转换】

文章目录 正整数到Excel编号之间的转换 正整数到Excel编号之间的转换 excel的列编号是这样的&#xff1a;a b c … z aa ab ac… az ba bb bc…yz za zb zc …zz aaa aab aac…; 分别代表以下的编号1 2 3 … 26 27 28 29… 52 53 54 55… 676 677 678 679 … 702 703 704 705;…...