狂神说Go语言学习笔记(一)

news/2024/5/19 2:26:51/文章来源:https://blog.csdn.net/G823909/article/details/128099567

一、Go语言的发展史

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


二、Go语言能做什么

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述



三、Go语言环境安装

下载地址

国外网站太慢,我们使用中文网进行下载!
Go下载 - Go语言中文网 - Golang中文社区 (studygolang.com)
在这里插入图片描述

安装

无脑下一步就完了 ,注意下这里创建自己设置一个Go语言的环境目录!

在这里插入图片描述

查看版本

打开cmd 输入go version检测是否安装成功
在这里插入图片描述

配置环境变量

GOROOT

在这里插入图片描述

GOPATH
在这里插入图片描述

这里需要在Goworks目录下存放三个包
文件源码都会在这三个文件下生成

在这里插入图片描述

确定一下path里是否有环境地址,如果没有的话在cmd输入go 以及go version就会找不到指令

在这里插入图片描述

输入go env检测环境是否设置成功

在这里插入图片描述

OK,到此Go安装完成!


四、GOLand安装

接下来该干什么呢,当然是下载编码工具啊,不然用记事本敲吗?!

下载地址

Thank you for downloading GoLand! (jetbrains.com)

下载后双击打开,设置安装环境地址

在这里插入图片描述

勾选

在这里插入图片描述

安装

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
成功!

四、HelloWorld

使用记事本编写hello.go

package mainimport "fmt"  // 导入一个系统包fmt用来输出的func main(){
fmt.Println("Hello World") // 打印输出helloworld字符串!
} 

使用cmd窗口运行,前面两次失败是Println的P没有大写

在这里插入图片描述

现在我们在GoLand中运行,看视频上会报一个错误 ,说是没有加载到系统的包,我自己是没有遇到,可能是版本问题

Package awesomeProject is not in GOROOT

我们打开cmd窗口,设置GO的环境变量
在这里插入图片描述

打印成功!

在这里插入图片描述

解释:在Go语言里,命名为main的包具有特殊的含义。Go语言的编译程序会试图把这种名字的包编译为二进制可执行文件。所有用Go语言编译的可执行程序都必须有一个名叫main的包,一个可执行程序 有且仅有一个 main包

当编译器发现某个包的名字为main时,它一定也会发现名为main()的函数,否则不会创建可执行文件。main()函数是程序的入口,所以,如果没有这个函数,程序就没有办法开始执行。程序编译时,会使用声明main包的代码所在的目录的目录名作为二进制可执行文件的文件名。



五、注释

给别人看的,机器并不会执行这行语句

单行注释

// 我是单行注释

多行注释

/*
我是多行注释
我是多行注释
我是多行注释
我是多行注释
*/// 这是一个main函数,这个是go语言启动的入口
func main() {//fmt.Println :打印一句话,然后执行完毕后,进行换行fmt.Println("Hello,World")
}



六、什么是变量

变量就是会变化的量,比如我定义了一个变量叫做名字,它在Go语言中是这样表示的:这个值既可以是张三,也可以是李四,也可以是狂神,也可以是你的名字,那么在这里,这个name就是变量,可以变化的量。

var name String = "只因"

我们定义的 name 变量 会指向内存中的某个地址,这个这个地址上的值就是变量的值,也就是在这里插入图片描述

在这里插入图片描述


七、变量的定义

Go语言是静态类型语言,就是所有的类型我们都需要明确的去定义
我们声明一个变量一般是使用var关键字

var name type
  • 第一个var是声明变量的关键字,是固定的写法,大家记住即可
  • 第二个name,就是我们变量的名字,你可以按照自己的需求给它定一个名字
  • 第三个type,就是用来代表变量的类型
//定义一个字符串变量 name
var name String
//定义一个数字类型变量 int
var age int

其实学过java、C或者其他编程语言的小伙伴,第一次看到这样的操作肯定不舒服,Go语言和许多编程语言不同,它在声明变量时将变量的类型放在变量的名称之后,这样的好处就是可以避免像C语言中那样含糊不清的表现形式

变量的明明规则遵守驼峰命名法(如:useFiles)

批量定义变量

var(
addr String
phone String
)

如果没有显式的给变量赋值,系统自动赋予它该类型的默认值

  • 整形和浮点型变量的默认值为0和0.0
  • 字符串变量的默认值为空字符串
  • 布尔型变量默认为false
  • 切片、函数、指针变量的默认为nil



八、变量的初始化

var (name string = "只因"age  int    = 22addr string = "IKun")fmt.Println(name, age, addr)

在这里插入图片描述

短变量声明并初始化

  	name2 := "只因"age2 := 22addr2 := "中国"fmt.Printf("name:%s,age:%d,addr:%s", name2, age2, addr2)fmt.Printf("%T,%T,%T", name2, age2, addr2)

在这里插入图片描述

这是Go语言的推导声明写法,编译器会自动根据右值的类型推断出左值的类型

因为简洁和灵活的特点,简短变量声明被广泛用于大部分的局部变量的声明和初始化

注意
由于使用了 := ,而不是赋值的 = ,因此推导声明写法的左值必须是没有被定义过的,若定义过,将会发生编译错误
在这里插入图片描述


九、打印内存地址

var age intage = 100fmt.Printf("age:%d,内存地址:%p", age, &age)age = 200fmt.Printf("age:%d,内存地址:%p", age, &age)

在这里插入图片描述

我们修改 age的值 但是内存地址不会发生改变,是因为我们只是修改了内存地址的值!



十、变量交换

在这之前我们学习别的语言交换两个变量的值,会比较麻烦
比如有 a=100 b=200
首先需要一个中间变量temp
然后走入下三步

1、 temp = a
2、 a = b
3、 b = temp

但是在Go语言中只需要一行

var a int = 100
var b int = 200b,a = a,b
fmt.Println(a, b)

在这里插入图片描述

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

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

相关文章

比搞笑诺奖还离谱,看完国产AIGC最新创作,把我给整不会了

杨净 萧箫 发自 凹非寺量子位 | 公众号 QbitAI现在,AI生成的东西,“真实”得都让我有点害怕了——只是给出《马斯克获得诺贝尔物理学奖》这个标题,AI竟然就刷刷刷几下,蹦出了一整套大纲来?!如果让AI生成一些…

计算机网络——分层结构,协议接口,服务

分层结构 主机进行资源共享时需满足以下条件: (1)发起通信的计算机要将数据通路进行激活 (2)告诉网络如何识别主机 (3)发起通信的主机要查明目的主机是否开机等 (4)发起…

【Linux】权限讲解

一、什么是权限 1、权限概念 权限随处可见,在生活中,腾讯非VIP用户不能观看VIP视频,看小说也需要会员,所以权限是限制人的,一件事是否允许被谁做。在Linux系统中也有许多权限,访问文件需要权限&#xff0c…

Windows OpenGL 图像色彩替换

目录 一.OpenGL 图像色彩替换 1.原始图片2.效果演示 二.OpenGL 图像色彩替换源码下载三.猜你喜欢 零基础 OpenGL ES 学习路线推荐 : OpenGL ES 学习目录 >> OpenGL ES 基础 零基础 OpenGL ES 学习路线推荐 : OpenGL ES 学习目录 >> OpenGL ES 特效 零基础 OpenGL…

[附源码]Python计算机毕业设计Django的实验填报管理系统

项目运行 环境配置: Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术: django python Vue 等等组成,B/S模式 pychram管理等等。 环境需要 1.运行环境:最好是python3.7.7,我…

FastDFS文件上传

分布式文件存储-FastDFS 介绍 FastDFS为互联网量身定制,充分考虑了冗余备份、负载均衡、线性扩容等机制,并注重高可用、高性能等指标,使用FastDFS很容易搭建一套高性能的文件服务器集群提供文件上传、下载等服务。 FastDFS体系结构 FastD…

基于改进粒子群算法的微电网多目标优化调度(Matlab代码实现)

👨‍🎓个人主页:研学社的博客 💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜…

62 - 单例类模板

---- 整理自狄泰软件唐佐林老师课程 1. 单例模式 1.1 需求的提出 在架构设计时,某些类 在整个系统生命期中 最多只能有一个对象存在(Single Instance) 1.1.1 问题 如何定义一个类,使得这个类最多只能创建一个对象?…

模拟电路设计(35)---几种脉宽调制型开关电路

Forward单端正激变换器 在buck变换器开关与负载之间插入隔离变压器,这种隔离型buck变换器叫做Forward单端正激变换器。如下图所示: Forward单端正激变换器 简单分析可知,滤波电感L在开关管关断期间,通过续流二极管为负载提供电流…

【手把手】教你玩转SpringCloud Alibaba之Nacos Config深入

1、不同环境相同配置问题-自定义Data ID配置 在实际的开发过程中,项目所用到的配置参数有的时候并不需要根据不同的环境进行区分,生产、测试、开发环境所用到的参数值是相同的。怎么解决同一服务在多环境中,引用相同的配置的问题&#xff1f…

Flutter 离线数据方案 Flutter_Data 包

Flutter 离线数据方案 Flutter_Data 包 原文 https://levelup.gitconnected.com/flutter-offline-first-with-flutter-data-62bad61097be 前言 通过离线优先来改善您的用户体验 Flutter Data 是一个让你的应用程序先离线的软件包。 离线时,它在设备上使用 Hive 存储…

H2N-Hyp-FF-OH, 2493080-84-3

Hyp-Phe-Phe 是一种三肽,通过 Phe 环的芳香相互作用形成螺旋状的薄片,构成一个交叉螺旋结构。Hyp-Phe-Phe 具有很高的剪切压电特性,可作为一种压电材料。Hyp-Phe-Phe is a tripeptide that forms helical-like sheets via aromatic interacti…

天翎知识文档系统+群晖NAS,助力企业实现移动化学习

编者按:移动化学习成为一种社会发展趋势,本文分析了企业移动化学习的意义,并提出了企业移动化学习的一款全新解决方案——天翎知识文档系统群晖NAS。 关键词:多端适配,学习培训,智能问答,在线预…

计算机内存与外存的区别及使用配合(内存外存区别与搭配;快速缓存;计算机总线结构)

计算机系统结构1. 为什么计算机存储会分为内存和外存呢?2. 关于快速缓存3. 计算机总线结构1. 为什么计算机存储会分为内存和外存呢? 外部储存器断电可以存储数据,但是读写速度相对于cpu来说很慢,而内存虽然读取速度很快但是断电之…

微服务框架 SpringCloud微服务架构 6 Nacos 配置管理 6.1 Nacos 实现配置管理

微服务框架 【SpringCloudRabbitMQDockerRedis搜索分布式,系统详解springcloud微服务技术栈课程|黑马程序员Java微服务】 SpringCloud微服务架构 文章目录微服务框架SpringCloud微服务架构6 Nacos 配置管理6.1 Nacos 实现配置管理6.1.1 统一配置管理6.1.2 直接开干…

SpringBoot中如何实现业务校验,这种方式才叫优雅!

大家好,在日常的接口开发中,为了保证接口的稳定安全,我们一般需要在接口逻辑中处理两种校验: 参数校验 业务规则校验 首先我们先看看参数校验。 参数校验 参数校验很好理解,比如登录的时候需要校验用户名密码是否为…

路径规划算法之刚体变换

目录 1 一般概念 1.1 基元的变换 1.2 一个参数化的变换族 2 2D变换 2.1 translation 2.2 rotation 2.3 Combining translation and rotation 3 3D变换 3.1 Yaw, pitch, and roll rotations 3.2 Determining yaw, pitch, and roll from a rotation matrix 3.3 The ho…

PyQt5 窗口数据传递

PyQt5 窗口数据传递单一窗口数据传递多窗口数据传递:调用属性多窗口数据传递:信号与槽开发应用程序时,若只有一个窗口则只需关心这个窗口里面的各控件之间如何传递数据。如果程序有多个窗口,就要关心不同的窗口之间是如何传递数据…

windows10系统安装nvm切换电脑node版本

介绍 nvm 是 node version manager(node 版本管理工具)的缩写,是一个命令行工具,用于管理和切换到不同版本的 node.js。 不同的项目可能需要不同版本的 node.js 和 npm(node 包管理器),例如&a…

CentOS7安装superset2.0

备注:自己在CentOS7.5下安装superset2.0成功。数据库以本地sqlite为准。Superset是由Python语言编写的Web应用,Superset2.0版本要求Python3.9的环境。 1、安装Miniconda 原因:conda是一个开源的包、环境管理器,可以用于在同一个…