Go语言基础学习(Go安装配置、基础语法)·
一、简介及安装教程
1、为什么学习Go?
简单好记的关键词和语法;更高的效率;生态强大;语法检查严格,安全性高;严格的依赖管理, go mod 命令;强大的编译检查、严格的编码规范和完整的软件生命周期工具;跨平台交叉编程,多平台编译;异步编程复杂性低,易维护,Go语言中Channel设计,异步程序写起来非常自然;语言层面支持并发,go关键字(协程)使得go的并发效率极高;严格的语法规范;Go的并发、性能、安全性、易于部署等特性,使它容易成为“云原生语言”。
Go语言设计之初,确定了三大原则:简洁性、可读性、功能性。
2、安装教程
安装Go
下载地址: All releases - The Go Programming Language
选择合适的版本进行下载安装。

这里以 .msi 文件为例,进行安装教程。
双击 .msi 文件,进行下载




等待下载完成。
配置环境变量
在 电脑 > 属性 > 高级系统设置 > 环境变量
添加如下配置

在path中配置如下:

配置GOPATH:安装相关包时的下载位置

在path中添加GOPATH

配置GOPROXY:Go的代理,不配置的话,下载某些包会失败,需要科学上网。

验证是否安装成功
在命令行界面(cmd)输入 go env ,出现以下内容即成功安装。

将 GO111MODULE 设置为 ON
在命令行界面输入
set GO111MODULE=on

到此,Go下载已经完成。
Go编程工具
这里,我使用的是VSCode,也可以选择使用Goland,下载地址如下:
GoLand by JetBrains: More than just a Go IDE
VSCode配置Go的编程环境
在VSCode的插件管理中,搜索 Go ,下载插件

Hello,World!
// 导入 fmt 包并调用其中的 Println 函数输出 "Hello, world!"
// 导入类
package main
// 导入 fmt 包
import "fmt"
// 主函数
func main() {fmt.Println("Hello, world!")
}

二、基础语法
1、变量
变量的标准定义: var 变量名 变量类型
变量占用多少的内存,是由变量的类型决定的
// 定义一个变量name,类型为string,然后通过fmt.Scanln()函数从控制台读取用户输入的姓名,并将其赋值给name变量。
// 最后通过fmt.Println()函数输出欢迎语,其中包含用户输入的姓名。
package mainimport "fmt"func main() {var name stringfmt.Println("Please enter your name:")fmt.Scanln(&name)fmt.Println("Hello, " + name + "!")
}

2、打包
将写好的程序进行发布,需要进行build操作。
golang可以打包成各个平台的可执行程序
// 打包 windows 执行程序
set GOOS=windows
set GOARCH=amd64
go build -o bin/app.exe main.go// 打包 Linux 执行程序
set GOOS=linux
set GOARCH=amd64
go build -o bin/app main.go// 打包 mac 执行文件
set GOOS=darwin
set GOARCH=amd64
go build -o bin/app_mac main.go
3、数据类型
go的数据类型分为以下几种:
数值类型:整型 和 浮点型
布尔类型:bool ,值为 true 和 false
字符类型:byte (底层uint8)和 rune (int32)
字符串类型:string
其他类型:数组、指针、结构体、Channel、函数、切片、any、map
类型别名
// 类型别名,给类型定义一个名称
type my_int int
// 这里是给int定义一个别名,为my_int
(1)数值类型
go提供有符号整型和无符号整型两种类型
有符号整型:int、int8、int16、int32、int64
无符号整型:uint、uint8、uint16、uint32、uint64、uintptr
注意:这里的8、16、32是位
无符号整型 uintptr ,是用于存放指针的,没有具体的bit大小,但是足够容纳指针
uintptr 类型在底层编程时才需要,特别是在Go与C的函数库或操作系统接口交互的地方
Go语言支持两种浮点型数据:float32 和 float64
输出时进行限制位数进行输出
如:fmt.print("%.5f",a) 即保留a的小数点后5位

(2)布尔类型
布尔类型只有 true 和 false ,且不能参与任何计算和类型转换
(3)字符类型
Go语言的字符类型有2种:
uint8类型,或者叫byte型,代表ASCII码的一个字符
rune类型,代表一个Unicode字符,当需要处理中文、日文或者其他复合字符时,需要用到rune类型。rune类型等价于int32类型。
ASCII定义128个字符,Unicode是ASCII的超集。
(4)类型推断
类型推断:可以使用 := 操作符进行变量声明和赋值,Go会根据右侧的值自动推断变量类型,例如:
y := 5。零值: 未初始化的变量会被赋予零值,数字类型为0,布尔类型为
false,字符串类型为空字符串等。多变量声明: 可以同时声明多个变量,例如:
var a, b, c int。
package mainimport ("fmt"
)func main() {// 单变量赋值var a int = 1// 多变量赋值var b, c int = 2, 3// 多变量定义并赋值var (d int = 4e int = 5f string = "world")// 简化赋值g := "hello"// 打印变量值fmt.Println(a, b, c, d, e, f, g)
}

(5)常量
常量声明: 使用const关键字声明一个常量,例如:const pi = 3.14159。
常量赋值: 常量的值在声明时必须被赋值,一旦赋值后不可修改。
枚举常量: 可以使用一组常量来模拟枚举,例如:const {a = 1b = 2 }类型指定: 常量的类型也可以被指定,例如:const speed int = 300000。
常量表达式: 常量可使用表达式计算,例如:const secondsInHour = 60 * 60。
无类型常量: 常量可以是无类型的,根据上下文自动推断类型。例如,const x = 5会被推断为整数类型。
()函数
一个函数包含函数名、参数列表、返回值类型和函数体
如,写一个求和函数add
// 传入值为a,b都为int类型,返回也为int类型,该函数的返回值为a + b
func add(a int, b int) int {return a + b
}
函数可以有0个或多个参数,Go可以有0个、1个、多个返回结果
多个返回值
// 该函数有两个返回值,都为int类型
func moreresult(a int, b int) (int, int){// a , b 操作return int1, int2
}
命名返回值
// 命名返回值在函数中为局部变量,可以进行使用
func namefunc(width, heigh int) (area int){area = width * heighreturn
}
// 该函数返回为 area 值为 width * heigh
空返回语句
// 空返回
func moreresult(a int, b int) (x, y int){x = ay = breturn
}
按值传递
// 写一个函数,返回i累加
func incrementi(i int) {i++
}
相关文章:
Go语言基础学习(Go安装配置、基础语法)·
一、简介及安装教程 1、为什么学习Go? 简单好记的关键词和语法;更高的效率;生态强大;语法检查严格,安全性高;严格的依赖管理, go mod 命令;强大的编译检查、严格的编码规范和完整的…...
高德开放平台API调用实战指南
本文 一、地图展示1.1 地图初始化与展示1.2 自定义标记 二、路线规划2.1 驾车路线规划2.2 步行路线规划 三、定位服务3.1 使用JavaScript API进行定位3.2 IP定位 四、实时交通信息查询4.1 获取实时交通路况 五、智能调度引擎总结 一、地图展示 地图展示是开发基于地理信息系统…...
文档太大LLM处理不过来?这10种LangChain分割技术帮你搞定!
前言 RAG(检索增强生成)是一种创建基于大语言模型(LLM)应用的高效方式。它有助于生成对用户查询的准确回答。为了创建一个基于 RAG 的应用程序,我们需要执行一些操作,例如文档加载、将大文档拆分为多个小块…...
TikTok广告账号被封?常见原因及解决方法分享
TikTok广告投放往往会给我们的账号带来高效曝光和精准流量,但同时许多用户也面临着一个困扰——广告账号被封禁的问题。将在此文一起商讨TikTok广告账号被封禁的原因,分析平台的具体规定,提供解决问题的应对策略,帮助大家有效规避…...
maven聚合ssm
如果没有写过ssm项目请移步SSM后端框架搭建(有图有真相)-CSDN博客 数据库准备 create table user (id int (11),uid varchar (60),name varchar (60),age int (11),sex varchar (12) ); insert into user (id, uid, name, age, sex) values(10,202409…...
网络通信与并发编程(二)基于tcp的套接字、基于udp的套接字、粘包现象
基于tcp的套接字 文章目录 基于tcp的套接字一、套接字的工作流程二、基于tcp的套接字通信三、基于udp的套接字通信四、粘包现象 一、套接字的工作流程 Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口。在设计模式中,Socket其实就是一个…...
400行程序写一个实时操作系统(十):用面向对象思想构建抢占式内核
前言 通过前几章的学习,我们学会了如何为RTOS设计一个合理的内存管理算法。现在,是时候学习设计RTOS内核了。 关于RTOS内核的文章也有很多,但都有一点先射箭再化靶子的意味。要么是代码连篇解释却寥寥无几,要么是要先怎么样再怎么…...
C#学习笔记(九)
C#学习笔记(九) 第六章 面向对象编程(一)类与对象、字段与属性一、类与对象正确的理解1. 什么是类?2.什么是对象?3. 类与对象的区别 二、类的基本规范和对象使用1. 类的规范 三、类的访问修饰符(…...
意外发现!AI写作这样用,热点文章轻松超越同行90%!
做自媒体,写热点文章很重要。 热点自带流量,能很快吸引不少读者。 可很多自媒体新手很犯愁。 干货文还能勉强写出来,碰到热点文就不知咋办了。 为啥写热点文章这么难呢? 关键是得找个新颖角度切入。 要是只在网上反复复制粘贴那些…...
WPF常见容器全方位介绍
Windows Presentation Foundation (WPF) 是微软的一种用于构建Windows桌面应用程序的UI框架。WPF的布局系统基于容器,帮助开发者以灵活、响应的方式组织用户界面 (UI) 元素。本篇文章将详细介绍WPF中几种常见的容器,包括Grid、StackPanel、WrapPanel、Do…...
重置时把el-tree树节点选中状态取消
要重置 Element UI 的 el-tree 组件并取消所有节点的选中状态,可以通过以下几种方法: 使用 setCheckedKeys 方法: 如果你的树配置了 node-key 属性,可以使用 setCheckedKeys 方法来清空所有选中的节点。 this.$refs.tree.setCheck…...
服务器系统克隆技术
工作任务:克隆对象是Windows server2019 和2022的datacenter版本 条件:在已经完成安装的虚拟机上做克隆 图1-1 用两个服务器的母盘准备进行克隆 第一步:新建一个文件目录用于安放克隆好的服务器 图1-2 创建两个目录用于安放即将克隆好的服务…...
【Java】多线程 Start() 与 run() (简洁实操)
Java系列文章目录 补充内容 Windows通过SSH连接Linux 第一章 Linux基本命令的学习与Linux历史 文章目录 Java系列文章目录一、前言二、学习内容:三、问题描述start() 方法run() 方法 四、解决方案:4.1 重复调用 .run()4.2 重复调用 start()4.3 正常调用…...
基于微信小程序的购物系统【附源码、文档】
博主介绍:✌IT徐师兄、7年大厂程序员经历。全网粉丝15W、csdn博客专家、掘金/华为云//InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专栏推荐订阅👇dz…...
AI绘画:24最新Stable Diffusion 终极炼丹宝典:从入门到精通!
前言 我是咪咪酱,以浅显易懂的方式,与大家分享那些实实在在可行之宝藏。 历经耗时数十个小时,总算将这份Stable Diffusion的使用教程整理妥当。 从最初的安装与配置,细至界面功能的详解,再至实战案例的制作…...
线性可分支持向量机的原理推导【补充知识部分】拉格朗日函数 公式解析
本文是将文章《线性可分支持向量机的原理推导》中的公式单独拿出来做一个详细的解析,便于初学者更好的理解。在主文章中,有一个部分是关于补充拉格朗日对偶性的相关知识,此公式即为这部分内容。 公式 9-9 是关于拉格朗日函数 L ( x , α , β…...
csdn(最新交流群)
SEOI Chathttps://seoi.net/room/10122?kwe7cp45v此网站开放性较强,小心诈骗...
新手maven入门学习教程
MAVEN基础入门 提示:java新人的学习之路记录 学习内容: 提示:了解并会初步使用maven构建管理java项目 Maven 是一个非常流行的 Java 项目管理和构建工具。它通过提供一套标准的构建生命周期和一组预定义的目标来简化 Java 应用程序的构建过…...
React 中级阶段学习计划
React 中级阶段学习计划 目标 掌握状态管理和路由。能够调用API并处理异步数据。学会使用CSS-in-JS和CSS Modules进行样式处理。 学习内容 状态管理 React Context API Context API:用于在组件树中传递数据,避免多层props传递。示例:im…...
[产品管理-47]:产品市场调研 - 一级市场、二级市场、次级市场?
目录 一、产品销售环节的一级二级市场 1、一级市场 2、二级市场 3、一级市场与二级市场的互动关系 二、金融中的一级二级市场 1、一级市场(Primary Market)- 新股发行、定向发行 2、二级市场(Secondary Market)- 普通投资者…...
云计算——弹性云计算器(ECS)
弹性云服务器:ECS 概述 云计算重构了ICT系统,云计算平台厂商推出使得厂家能够主要关注应用管理而非平台管理的云平台,包含如下主要概念。 ECS(Elastic Cloud Server):即弹性云服务器,是云计算…...
React Native 导航系统实战(React Navigation)
导航系统实战(React Navigation) React Navigation 是 React Native 应用中最常用的导航库之一,它提供了多种导航模式,如堆栈导航(Stack Navigator)、标签导航(Tab Navigator)和抽屉…...
【入坑系列】TiDB 强制索引在不同库下不生效问题
文章目录 背景SQL 优化情况线上SQL运行情况分析怀疑1:执行计划绑定问题?尝试:SHOW WARNINGS 查看警告探索 TiDB 的 USE_INDEX 写法Hint 不生效问题排查解决参考背景 项目中使用 TiDB 数据库,并对 SQL 进行优化了,添加了强制索引。 UAT 环境已经生效,但 PROD 环境强制索…...
2024年赣州旅游投资集团社会招聘笔试真
2024年赣州旅游投资集团社会招聘笔试真 题 ( 满 分 1 0 0 分 时 间 1 2 0 分 钟 ) 一、单选题(每题只有一个正确答案,答错、不答或多答均不得分) 1.纪要的特点不包括()。 A.概括重点 B.指导传达 C. 客观纪实 D.有言必录 【答案】: D 2.1864年,()预言了电磁波的存在,并指出…...
IT供电系统绝缘监测及故障定位解决方案
随着新能源的快速发展,光伏电站、储能系统及充电设备已广泛应用于现代能源网络。在光伏领域,IT供电系统凭借其持续供电性好、安全性高等优势成为光伏首选,但在长期运行中,例如老化、潮湿、隐裂、机械损伤等问题会影响光伏板绝缘层…...
Fabric V2.5 通用溯源系统——增加图片上传与下载功能
fabric-trace项目在发布一年后,部署量已突破1000次,为支持更多场景,现新增支持图片信息上链,本文对图片上传、下载功能代码进行梳理,包含智能合约、后端、前端部分。 一、智能合约修改 为了增加图片信息上链溯源,需要对底层数据结构进行修改,在此对智能合约中的农产品数…...
MySQL 8.0 事务全面讲解
以下是一个结合两次回答的 MySQL 8.0 事务全面讲解,涵盖了事务的核心概念、操作示例、失败回滚、隔离级别、事务性 DDL 和 XA 事务等内容,并修正了查看隔离级别的命令。 MySQL 8.0 事务全面讲解 一、事务的核心概念(ACID) 事务是…...
淘宝扭蛋机小程序系统开发:打造互动性强的购物平台
淘宝扭蛋机小程序系统的开发,旨在打造一个互动性强的购物平台,让用户在购物的同时,能够享受到更多的乐趣和惊喜。 淘宝扭蛋机小程序系统拥有丰富的互动功能。用户可以通过虚拟摇杆操作扭蛋机,实现旋转、抽拉等动作,增…...
tauri项目,如何在rust端读取电脑环境变量
如果想在前端通过调用来获取环境变量的值,可以通过标准的依赖: std::env::var(name).ok() 想在前端通过调用来获取,可以写一个command函数: #[tauri::command] pub fn get_env_var(name: String) -> Result<String, Stri…...
Unity VR/MR开发-VR开发与传统3D开发的差异
视频讲解链接:【XR马斯维】VR/MR开发与传统3D开发的差异【UnityVR/MR开发教程--入门】_哔哩哔哩_bilibili...
