Go语言编程设计学习Day1:helloworld 变量 常量

避开这些坑!海天MA1600注塑机数据采集项目经验分享 本文分享了海天MA1600注塑机数据采集项目的实战经验。针对KEBA控制器接口不开放的难题,项目采用专用网关进行协议转换,并详细剖析了网络部署、ModbusTCP配置、数据准确性保障及现场运维中遇到的典型陷阱与解决方案,为同类工业物联网项目提供宝贵参考。 阅读详情

简单认识go语言

简单了解一下go语言的历史, 二十世纪八十年代,肯·汤普逊在内的Plan 9项目原班人马加入了谷歌在Google,他们创造了Go语言。早在2007年9月,Go语言还是这帮大牛的20%自由时间
的实验项目。幸运的是,到了2008年5月,Google发现了Go语言的巨大潜力,从而开始全力支持
这个项目,让这批人可以全身心投入Go语言的设计和开发工作中。Go语言的第一个版本在2009
年11月正式对外发布,并在此后的两年内快速迭代,发展迅猛。第一个正式版本的Go语言于2012
年3月28日正式发布,让Go语言迎来了第一个引人瞩目的里程碑。

谷歌一贯的作风 拥抱开源,所以我们也可以在github上去下载go的源码来查看,甚至为go贡献一些新的内容

下面罗列一下Go语言最主要的特性:
 自动垃圾回收
 更丰富的内置类型
 函数多返回值
 错误处理
 匿名函数和闭包
 类型和接口
 并发编程
 反射
 语言交互性

配置开发环境

  • 下载go

  • 设置gopath(go代码存放空间), goroot(go语言sdk/bin文件夹)

  • vscode 导入go的多个插件

    在这里插入图片描述

  • 创建go的代码存放结构

image-20221215160913042

第一个go程序

//  声明文件所存在的位置 packge
package main

// 进入需要使用的工具库(包)
import "fmt"

// main 函数 程序的入口
func main(){
	fmt.Println("hello golang")
}

常用的命令

  • 执行go文件 go run xxxx
  • 生成可执行文件 go build xxx

变量

​ 我们可以将一个程序 看作一个小世界 不论哪个世界 都有构成他的一部分, 变量就是构建程序世界的一部分

变量实际上就是存放在内存中的一个数据空间的表示 他可能有不同的类型 .

image-20221215161403147

Go语言的变量声明方式与C和C++语言有明显的不同。对于纯粹的变量声明,Go语言引入了

Go语言的变量声明方式与C和C++语言有明显的不同。对于纯粹的变量声明,Go语言引入了
关键字var,而类型信息放在变量名之后,示例如下:

var v1 int
var v2 string
// 数组
var v3 [10]int
// 数组切片
var v4 []int
var v5 struct {
  f int
  }
 // 指针
var v6 *int
 // map,key为string类型,value为int类型
var v7 map[string]int
var v8 func(a int) int

变量声明语句不需要使用分号作为结束符。与C语言相比,Go语言摒弃了语句必须以分号作
为语句结束标记的习惯。

关键字var,而类型信息放在变量名之后,示例如下:

  1. var v1 int
  2. var v2 string
  3. var v3 [10]int
  4. // 数组
  5. var v4 []int
  6. // 数组切片
  7. var v5 struct {
  8. f int
  9. }
  10. var v6 *int
  11. // 指针
  12. var v7 map[string]int
  13. // map,key为string类型,value为int类型
  14. var v8 func(a int) int
  15. 变量声明语句不需要使用分号作为结束符。与C语言相比,Go语言摒弃了语句必须以分号作
  16. 为语句结束标记的习惯。

变量的使用流程

在go 语言中 声明变量(类型有默认值可以直接使用)就必须要使用, 否则会出现编译异常

  • 声明
  • 复制
  • 使用

示例:

	var age int
	age = 18
	fmt.Println("age=",age)

变量初始化方式

​ 对于声明变量时需要进行初始化的场景,var关键字可以保留,但不再是必要的元素

var v1 int = 10 // 正确的使用方式1
var v2 = 10
// 正确的使用方式2,编译器可以自动推导出v2的类型
v3 := 10
// 正确的使用方式3,编译器可以自动推导出v3的类型

​ 指定类型已不再是必需的,Go编译器可以从初始化表达式的右值推导出该变量应该声明为
哪种类型,这让Go语言看起来有点像动态类型语言,尽管Go语言实际上是不折不扣的强类型语
言(静态类型语言)。

需要注意的事 := 左侧的变量不应该是已经被声明过的 否则会出现异常

var i int
i := 2
会导致类似如下的编译错误:
no new variables on left side of :=

变量赋值

​ 在Go语法中,变量初始化和变量赋值是两个不同的概念。下面为声明一个变量之后的赋值
过程:

var v10 int
v10 = 123

​ Go语言的变量赋值与多数语言一致,但Go语言中提供了C/C++程序员期盼多年的多重赋值功
能,比如下面这个交换i和j变量的语句:

i, j = j, i

​ 在不支持多重赋值的语言中,交互两个变量的内容需要引入一个中间变量:

t = i; i = j; j = t;

匿名变量

​ 在Go中这种情况可以通过结合使用多重返回和匿名变量来避免定义一些不必要变量的丑陋写法,让代码看起来更加优雅。

​ 假设 GetName()函数的定义如下,它返回3个值,分别为firstName、 lastName和
nickName:

func main(){
	// var v1 int  = 10
	// var v2 = 10
	// v3:= 3
	// fmt.Println(v1,v2,v3);
	_, _, nickName:= GetName()
	fmt.Println(nickName);
}
//若只想获得nickName,则函数调用语句可以用如下方式编写
func GetName()(firstName,lastName,nickName string){
	return "may", "chan", "chibi maruko"
}

输出结果:

chibi maruko

​ 这种用法可以让代码非常清晰,基本上屏蔽掉了可能混淆代码阅读者视线的内容,从而大幅降低沟通的复杂度和代码维护的难度。

常量

​ 在Go语言中,常量是指编译期间就已知且不可改变的值。常量可以是数值类型(包括整型、浮点型和复数类型)、布尔类型、字符串类型等。

字面常量

​ 所谓字面常量(literal),是指程序中硬编码的常量,如:

-12
3.14159265358979323846
// 浮点类型的常量
3.2+12i
// 复数类型的常量
true
// 布尔类型的常量
"foo"
// 字符串常量

​ 在go语言中 它是无类型的。只要这个常量在相应类型的值域
范围内,就可以作为该类型的常量

常量定义

​ 通过const关键字,你可以给字面常量指定一个友好的名字:

const Pi float64 = 3.14159265358979323846
const zero = 0.0 // 无类型浮点常量
const (
size int64 = 1024
eof = -1 // 无类型整型常量
)
const u, v float32 = 0, 3 // u = 0.0, v = 3.0,常量的多重赋值
const a, b, c = 3, 4, "foo"
// a = 3, b = 4, c = "foo", 无类型整型和字符串常量

​ Go的常量定义可以限定常量类型,但不是必需的。如果定义常量时没有指定类型,那么它
与字面常量一样,是无类型常量。
常量定义的右值也可以是一个在编译期运算的常量表达式,比如

const mask = 1 << 3

预定义常量

​ Go语言预定义了这些常量:true、false和iota。

​ iota比较特殊,可以被认为是一个可被编译器修改的常量,在每一个const关键字出现时被
重置为0,然后在下一个const出现之前,每出现一次iota,其所代表的数字会自动增1。

从以下的例子可以基本理解iota的用法:

const (
// iota被重设为0
c0 = iota// c0 == 0
c1 = iota// c1 == 1
c2 = iota// c2 == 2
)
const (
a = 1 << iota// a == 1 (iota在每个const开头被重设为0)
b = 1 << iota// b == 2
c = 1 << iota// c == 4
)
const (
u = iota * 42 // u == 0
v float64 = iota * 42 // v == 42.0
w = iota * 42// w == 84
)
const x = iota// x == 0 (因为iota又被重设为0了)
const y = iota// y == 0 (同上)
    

​ 如果两个const的赋值语句的表达式是一样的,那么可以省略后一个赋值表达式。因此,上面的前两个const语句可简写为:

const (
// iota被重设为0
c0 = iota // c0 == 0
c1 // c1 == 1
c2 // c2 == 2
)
const (
a = 1 <<iota // a == 1 (iota在每个const开头被重设为0)
b // b == 2
c // c == 4
)

枚举

​ 枚举指一系列相关的常量,比如下面关于一个星期中每天的定义。通过上一节的例子,我们看到可以用在const后跟一对圆括号的方式定义一组常量,这种定义法在Go语言中通常用于定义枚举值。Go语言并不支持众多其他语言明确支持的enum关键字。

const (
Sunday = iota
Monday
Tuesday
Wednesday
Thursday
Friday
Saturday
numberOfDays // 这个常量没有导出
)

​ 同Go语言的其他符号(symbol)一样,以大写字母开头的常量在包外可见。
以上例子中numberOfDays为包内私有,其他符号则可被其他包访问。

Windows 11 安装、使用 IndexTTS2 本文详细介绍了如何在 Windows 11 系统上安装与使用 B站开源的新一代文本转语音模型 IndexTTS2。内容涵盖硬件要求、Git 与 uv 工具安装、项目源码获取、依赖配置、模型下载及 WebUI 启动步骤,并说明了基础与高级使用方法。教程注重实操细节,包括环境变量设置、显存适配启动参数等,帮助用户顺利部署并体验高质量、可调控情感与节奏的 TTS 语音合成效果。 阅读详情

相关推荐

基于ESP32-C3的便携式血氧仪硬件与算法实现

血氧饱和度(SpO₂)监测是生理参数无创检测的核心技术之一,其原理基于光电容积脉搏波(PPG)信号中红光与红外光吸收比值的动态变化。该技术依赖高精度模拟前端、稳定光学激励及实时数字信号处理能力,在消费级健康设备中面临功耗、体积与测量鲁棒性的多重约束。ESP32-C3凭借集成LEDC、12位ADC与低功耗双核架构,成为PPG终端的理想主控平台;结合定制化指夹式光学探头与比率法血氧算法,可实现非诊断级但趋势可靠的日常健康监测。本文围绕硬件电路设计、电源管理策略与嵌入式信号处理流程展开,覆盖从LED驱动、跨阻放大

weixin_29025501的博客 132

GoLang基础学习(一)

GoLang入坑之路 2020/09/24 变量 变量的声明 Go语言的变量声明方式与C和C++语言有明显的不同。对于纯粹的变量声明,Go语言引入了关键字var,而类型信息放在变量名之后,示例如下: var v1 int var v2 string var v3 [10]int //数组 var v4 []int //数组切片 var v5 struct { f int } var v6 *int //指针 var v7 map[string]int //map,类似于python中的字典,ke

weixin_46644391的博客 200

LightTools宏 vs Python API:光学仿真自动化方案选型指南

本文深入对比了LightTools光学仿真自动化中VBA宏与Python API两种方案。VBA宏内嵌易用,适合固定流程批处理;Python API生态强大,尤其在参数优化算法集成方面优势显著,便于构建复杂工作流。文章结合案例,为不同场景下的技术选型提供清晰指南。

garlic的博客 939

Golang学习笔记【2】

1.因为go语言是不用加分号(;)的所以编译的时候是会默认只有每行的最后才有;,因此写代码时不要都挤在一行。2.package main代表你写的是执行程序,这样才可以运行,如果你是别的,就表示你写的是库,所以不能运行3.左括号不能换行4.如果定义的变量或者引入的包没有用过,那么编译不能通过,但是全局变量除外。

TJSW_的博客 398

Python爬虫实战:抓取天气数据并生成可视化图表(完整可复制代码)

工具/库核心作用选型理由requests发送HTTP请求,获取天气网页内容语法简单,上手快,支持Headers配置(反爬)解析HTML页面,提取目标天气数据无需懂复杂XPath,API直观,快速定位标签pandas数据清洗、整理(如日期/温度格式化)一键处理数据格式,与matplotlib无缝适配matplotlib生成可视化图表(折线图/饼图/柱状图)Python主流可视化库,定制性强,支持保存高清图生成随机User-Agent,应对反爬自动更新UA池,避免手动维护。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 909

PVE 9.0 保姆级安装及优化教程(换源、网络配置、远程唤醒等)【基础篇】

最近,Proxmox VE 推出了基于 Debian 13 的 9.0 版本。正巧我手头有一台闲置的老电脑,与其闲置,不如装上 PVE,让它化身 All in One,继续发挥它的余热。G4560 算是一颗 NAS 神 U,十几元的售价就能有双核四线程,比起什么 J1900 不知道强到哪里去了,尽管定位上是奔腾处理器,但性能甚至能和同代的酷睿 i3-7100 掰掰手腕,并且它还自带 HD 610 的核显,对于解码的支持也还不错。

zc_mk的博客 7508

day01java_环境变量,HelloWorld,变量,常量

1.配置java的环境变量 2.知道jdk和jre以及jvm的关系 3.常见的dos命令 4.知道开发三步骤 5.编写java的入门程序 6.会使用注释对代码进行解释说明 7.知道java入门程序中的每一句话代表的啥 8.知道java入门程序的注意事项 9.掌握java中的常量

qq_46664968的博客 1973

ROS2与Gazebo协同实现多机器人避障仿真

本文详细介绍了如何利用ROS2与Gazebo协同搭建多机器人避障仿真环境。通过创建SDF机器人模型、编写多机器人启动文件以及集成基础避障算法,构建了一个低成本、高效率的虚拟测试平台,为AGV编队、机器人集群等项目的算法验证与迭代提供了完整解决方案。

weixin_29065659的博客 293

Go语言学习Day1:什么是Go?

Go语言学习Day1:什么是Go?

Code_流苏:在代码中寻诗意,在实践中觅真知 3035

电子技术设计——16×16点阵汉字显示设计

同时,设计还应注重提升显示品质,以保证汉字的稳定展示和观感舒适。本设计的目的是构建一个能够准确在LED点阵上展示汉字的系统,并允许用户通过输入设备来选择所需的汉字,我们将验证设计方案的实际操作性和效果,以确保其满足设计目标。在LED点阵显示和汉字信息处理技术的结合下,研究者们着手研究如何在LED点阵上有效地显示汉字,并提出了一系列显示算法和优化策略,旨在实现清晰且易于阅读的汉字显示效果。首先,你需要准备16×16的LED点阵面板,通常这些点阵是8×8点阵的两倍,因此可以由两个8×8的点阵组合而成。

weixin_68094467的博客 1532

别再只会用QTcpSocket了!手把手教你用QSslSocket为你的Qt网络应用加上SSL/TLS加密(附完整代码示例)

本文详细介绍了如何将Qt网络应用从QTcpSocket迁移到QSslSocket,实现SSL/TLS加密传输。通过对比API差异、解析核心机制和提供完整代码示例,帮助开发者快速掌握安全网络编程技巧,有效防范数据窃听和中间人攻击等安全风险。

weixin_30654583的博客 400

day001:一起认识 Go语言

1.1、历史背景介绍:了解过Google公司的文化的你,想必也知道20%工作时间里所创造出的互联网产品,例如:谷歌新闻(Google News)、谷歌地图(Google Map)、语音服务(Google Now)等等。然而,我们要学习的Go语言,其实也是Google工程师们,利用他们20%的工作时间所开发的一门新型语言,并且是2007年诞生的。经过10多年的发展,在云计算或区块链方面,有着显著的优势,并在2016年被评为年度最佳语言,比如你所知道的Docker和Kubernetes都是由Go语言开发。

BlackSpirit_0618的博客 1178

使用Everything清理垃圾文件的实战方案(持续更新)

本文主要介绍了使用Everything清理垃圾文件的实战方案,希望能对同学们有所帮助。 文章目录 1. Everything工作原理简述 2. Everything实战清理垃圾文件 2.1 清理应用无用文件 2.2 清理无用但遗忘的文件 2.3 使用Python代码自动化删除重复文件

weixin_43178406的博客 2万+

Go语言学习Day01

Go语言学习Day01 一.Go语言环境搭建 官方镜像站:https://golang.google.cn/dl/ 2. 安装好后打开cmd,输入:go version检查go语言版本 配置GPPATH: ​ 注意:这里写的是你安装go时的路径 代码路径 bin:可执行文件在这里 src:我们写的代码要放在这里 pkg:编译的中间状态的包需要放在pkg中 需要将bin目录也添加到环境变量中 ​ 将原先的

Crryg_Gpc的博客 275

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

Go学习Day1

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录前言二、语言结构1.引入库总结 前言 第一天的正式学习Go语言,主要了解Go语言的特性,编程规范。 # 一、Go语言特性 1.Go语言的语法规则严谨,没有歧义,任何人写出的代码都基本一致,这使得Go语言简单易学。放弃部分“灵活”和“自由”,换来更好的维护性。 2.Go语言有指针类型,同时也有内存回收机制,指针的存在会导致内存回收困难。不过还好Go语言的指针运算是被阻止的。 3.Go是编译型语言,Go 使用编译器来编译代码。要创建

fengxiaofei09的博客 157

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

安装并初步使用Golang语言,执行文件输出HelloWorld-day1

这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 欢迎使用Markdown编辑器 你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Mar

m0_43443536的博客 805

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Go语言学习 Day0 Summary

Go语言学习 Day0 Summary

u011868279的博客 201

【初识Go】| Day1 Go语言特征&开发环境配置

久闻 Go 语言大名,了解它是 Google 开发的一门静态强类型、编译型、并发型,并具有垃圾回收功能的编程语言。由于 Go 对于高并发的处理表现优异,很多互联网大厂纷纷投奔,比如听说字节跳动早期为了快速构建系统,很多后台应用使用 Python 语言,随着用户量和访问量的增加逐渐使用 Go 进行替代,还有滴滴、腾讯内部也都有很多采用 Go 语言作为后端语言的项目。 虽然之前也尝试学习和编写简单 Go 程序,但并未完全坚持下来,现在重拾起来,并通过学习笔记的方式进行记录,希望借此入门 Go 语言。 Go语.

u014759944的博客 265

Golang学习系列第一天:安装golang

0. ssh连接linux(我用的centos7),略 1. golang下载 由于Golang官网https://golang.org/国内无法直接访问,故可以到Go语言中文网下载:https://studygolang.com/dl,可根据自己的电脑操作系统下载对应的版本,我下载的是go1.14.4.linux-amd64.tar.gz最新(当前时间)安装包,不过也可以直接点击下面这个链接直接下载https://dl.google.com/go/go1.14.4.linux-amd64.t...

董广明的博客 640

Go语言初始

"当我回头,妄想找到幸福的线索,那束光拉长我的影子,逃离我。一、Go简介Go(又称Golang)是Google的 Robert Griesemer,Rob Pike 及 Ken Thompson 开发的一种静态强乐西、编译型语言。Go 语言语法与C相近,但功能上有:内存安全,GC(垃圾回收),结构形态及 CSP-style 并发计算。Go(计算机编程语言)go也是现在很火的一个语言。

RNGWGzZs的博客 635

Go学习Day0

Go学习Day0 提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录前言一、Go语言特性二、安装环境1.Go环境2.IDE:vscode与goland总结欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLow

fengxiaofei09的博客 249

GO语言学习day01

Go语言保证了既能到达静态编译语言的安全和性能,又达到了动态语言开发维护的高效率使用一个表达式来形容 Go 语言:Go=C+Python,说明 Go 语言既有C静态语言程序的运行速度,又能达到 Python 动态语言的快速开发。

dddoinbbbb的博客 540

go语言日记day1

从idea就开始入jetbrain的坑了,后续还用过pycharm和clion,这些ide的快捷键都很相似,用得也很顺手,也许就是官方宣称的“人体工学”吧,像我这样的用户就产生了粘性。直接点击运行,都是默认configuration,死活没有输出。在配置里添加一个output directory即可。再次运行可以看到控制台打印Hello World。配置GOROOT为SDK目录。配置GOPATH为项目路径。配置GOPATH为项目路径。

weixin_48481972的博客 315

go设置后端启动_Go语言基础(一)

GO语言基础(一)一、Go下载与安装二、GOPATH配置三、VSCode下载与安装四、编写第一个hello world程序一、Go下载与安装Go官网下载地址:https://golang.org/dl/Go官方镜像站(推荐):https://golang.google.cn/dl/安装完成之后打开cmd进行检查,"go version"进行版本检查。二、GOPATH配置1、新建一个文件夹,里面用于...

weixin_39614750的博客 640

day01.[环境变量,HelloWorld]

JavaSE知识模块介绍数据类型运算符流程控制数组、…(没有为啥,按照格式定义)类和对象封装继承多态抽象接口、…JAVA核心编程思想(面向对象),很多功能别人已经给我们实现好了,我们直接调用这个对象的功能就可以了,让代码变得简单了,简洁了集合I/O多线程网络编程反射机制、…Lambda表达式函数式编程新Date/Time API接口的默认、静态和私有方法、…SQL语句数据库连接池DBUtils事务管理批处理、…所谓计算机编程语言,就是人们使用编程语言对计算机下达的命令,让计算机完成人们需要的功能。

知识贩卖机_的博客 910

1、GO语言入门-环境准备及第一个go程序开发

golang中文网:https://studygolang.com/dl或者:https://go.dev/dl/

startqbb的博客 325
上一篇: 图解设计模式:动动手玩转迭代器模式
下一篇: 图解设计模式:动动手玩转适配器模式
冷环渊
博客等级 码龄7年 1130粉丝 176原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

冷环渊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值