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 main

import "fmt"

func main() {
	var name string
	fmt.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)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/891689.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

数据库的相关知识

数据库的相关知识 1.数据库能够做什么? 存储大量数据,方便检索和访问保持数据信息的一致、完整共享和安全通过组合分析,产生新的有用信息 2.数据库作用? 存储数据、检索数据、生成新的数据 3.数据库要求? 统一、…

leetcode128最长连续序列 golang版

题目描述 题目:给定一个未排序的整数数组 nums 找出数字连续的最长序列,不要求序列 元素在原数组中连续 的长度 请你设计并实现时间复杂度为On的算法解决此问题 示例 1: 输入:nums [100,4,200,1,3,2] 输出:4 解释&…

基于RPA+AI的网页自动填写机器人 | OPENAIGC开发者大赛高校组优秀作品

在第二届拯救者杯OPENAIGC开发者大赛中,涌现出一批技术突出、创意卓越的作品。为了让这些优秀项目被更多人看到,我们特意开设了优秀作品报道专栏,旨在展示其独特之处和开发者的精彩故事。 无论您是技术专家还是爱好者,希望能带给…

软件设计师---知识产权

著作权 著作权(也称为版权):是指作者对其创作的作品享有的人身权和财产权。 人身权包括: 发表权:时限是作者终身及其死亡后50年署名权:不受时间限制修改权:不受时间限制保护作品完整权&#…

MFC扩展库BCGControlBar Pro v35.1新版亮点:改进网格控件性能

BCGControlBar库拥有500多个经过全面设计、测试和充分记录的MFC扩展类。 我们的组件可以轻松地集成到您的应用程序中,并为您节省数百个开发和调试时间。 BCGControlBar专业版 v35.1已全新发布了,这个版本改进网格控件的性能、增强工具栏编辑器功能等。 …

Android 防止截屏和录屏

通过给当前的window对象设置标记WindowManager.LayoutParams.FLAG_SECURE来防止截屏和录屏 protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);// 防止截屏getWindow().setFlags(WindowManager.LayoutParams.FLAG_SECURE, WindowManage…

en造数据结构与算法C# 之 堆排序

堆的特点 堆排序有两个分类:大顶堆,小顶堆 比如大顶堆就是说所有根节点的值都比左右子节点大 en造数据结构与算法C# 二叉排序树 泛型类的基本构成-CSDN博客 en造数据结构与算法C# 之 二叉排序树的增/查-CSDN博客 en造数据结构与算法C# 之 二叉排序…

使用激光跟踪仪提升码垛机器人精度

标题1.背景 码垛机器人是一种用于工业自动化的机器人,专门设计用来将物品按照一定的顺序和结构堆叠起来,通常用于仓库、物流中心和生产线上,它们可以自动执行重复的、高强度的搬运和堆垛任务。 图1 码垛机器人 传统调整码垛机器人的方法&a…

Qt - QMenu

QMenu 1、menu转string输出 //GlobalEnum.h #include <QObject> #include <QMetaEnum> class GlobalEnum : public QObject {Q_OBJECT public:EnumTest();enum Enum_Test{ZhangSan 0,WangWu,};Q_ENUM(Enum_Test) };#define EnumToString(e) \ QMetaEnum::fromTy…

前端vue部署网站

这里讲解一下前端vue框架部署网站&#xff0c;使用工具是 xshell 和 xftp &#xff08;大家去官网安装免费版的就行了&#xff09; 服务器 我使用的阿里云服务器&#xff0c;买的是 99 一年的&#xff0c;淘宝有新手9.9 一个月服务器。可以去用&#xff0c;学生的话是有免费三…

【优选算法】(第三十六篇)

目录 ⼆叉树的锯⻮形层序遍历&#xff08;medium&#xff09; 题目解析 讲解算法原理 编写代码 ⼆叉树的最⼤宽度&#xff08;medium&#xff09; 题目解析 讲解算法原理 编写代码 ⼆叉树的锯⻮形层序遍历&#xff08;medium&#xff09; 题目解析 1.题目链接&#xf…

zabbix7.0配置中文界面

Zabbix 是一个广泛使用的开源监控解决方案&#xff0c;支持多种语言界面。本文将详细介绍如何配置 Zabbix 以使用中文界面&#xff0c;从而提高用户体验和可读性。 1. 环境准备 在开始配置之前&#xff0c;请确保你已经安装并运行了 Zabbix 服务器、前端和数据库。如果你还没有…

c++中,经常需要用来获取用户输入的写法,或者暂停【防止终端退出】

目录 1. 使用 cin.get() 暂停程序 2. 使用 std::cin.ignore() 结合 std::cin.get() 暂停程序 3. 使用 system("pause")&#xff08;仅限 Windows&#xff09; 4. 使用循环和 cin.get() 结合等待任意输入 5. 使用 cin >> 获取用户输入 为了防止终端窗口在程…

亚信安全亮相中国移动全球合作伙伴大会 AI+安全焕新变革原力

近日&#xff0c;2024中国移动全球合作伙伴大会在广州盛大召开。以“智焕新生 共创AI时代”为主题&#xff0c;携手数百位世界500强企业、国内外知名企业齐聚广州&#xff0c;共商融合创新&#xff0c;共谋AI未来&#xff0c;开启中国式现代化建设的新征程。亚信安全作为中国移…

QT文件操作【记事本】

mainwindow.h核心函数 QFileDialog::getOpenFileName()QFileDialog::getSaveFileName() #ifndef MAINWINDOW_H #define MAINWINDOW_H#include <QMainWindow> #include<QFileDialog> #include<QMessageBox> #include<QDebug> #include<QFile> #…

U9销售订单不能带出最新价格出来

业务员突然说系统带不出来销售价格。了解之后&#xff0c;不是带不出来价格&#xff0c;是做了价格调整之后&#xff0c;最新价格没有匹配出来&#xff0c;带出来的价格是历史价格。检查&#xff0c;分析相关的单据&#xff0c;生效日期&#xff0c;失效日期&#xff0c;审核状…

使用 python 下载 bilibili 视频

本文想要达成的目标为&#xff1a;运行 python 代码之后&#xff0c;在终端输入视频链接&#xff0c;可自动下载高清 1080P 视频并保存到相应文件夹。 具体可分为两大步&#xff1a;首先&#xff0c;使用浏览器开发者工具 F12 获取请求链接相关信息&#xff08;根据 api 接口下…

从加载到对话:使用 Llama-cpp-python 本地运行量化 LLM 大模型(GGUF)

&#xff08;无需显卡&#xff09;使用 Llama-cpp-python 在本地加载具有 70 亿参数的 LLM 大语言模型&#xff0c;通过这篇文章你将学会用代码创建属于自己的 GPT。 建议阅读完 19a 的「前言」和「模型下载」部分后再进行本文的阅读。 代码文件下载&#xff1a;Llama-cpp-pyth…

Vue3 + TypeScript + Vite + Echarts

Vue3 TypeScript Vite Echarts 1、创建工程 npm create vitelatestcd echarts npm install npm run dev2、安装项目依赖模块 npm install types/node --save-devnpm install vue-router4npm install animate.css --save npm install gsap --savenpm install fetch --save …

跨境电商干货:Etsy选品及相关运营技巧分享

Etsy作为一个吸引了全球将近一亿消费者的电子商务平台&#xff0c;因其聚焦小众、原创、设计产品的特点而拥有相当不错的流量和潜力&#xff0c;如果需要优化自己的Etsy店铺选品工作&#xff0c;可以参考以下技巧。 一、选品方向 1.按需求 Etsy主张售卖富有创意的、由卖家制作…