【主打就是简洁】及其精炼的Go语言速成大法(1)
**#注:本文章越过go的安装与环境配置。 **
1.go的初始认识
特点:
- 开源的编程语言
- 简洁
用来做什么呢?
- 搭载web服务器,存储集群或类似用途的巨型中央服务器。
- 游戏服务端的开发很不错
2.编写第一个简单的Hello word
package main//定义包名,必须在源文件中非注释的第一行指明这个文件属于那个包
//表示一个可独立执行的程序,每个go应用程序都包含一个名为main的包import "fmt"
//fmt实现了格式化IO的函数
func main(){//定义了程序的入口函数(如果有init()函数则会先执行该函数)fmt.Println("Hello world")
}
注:func main(){
}中的 { 不能单独出现在一行
3.基础语法
3.1变量
- 变量时计算机语言中能存储计算结果或能表示值抽象概念
- 变量 :利用变量将数据的内存地址保存
- 变量必须经过声明才可以使用,且声明后必须使用
- 全局变量允许声明但不使用
- 声明变量的格式
var 变量名 变量类型
例:
var name string
var age int
var isOk bool
- 批量申明
var (a stringb intc boold float32
)
- 变量的初始化
- go语言在声明变量的时候,对变量的内存区域进行初始化操作
整型,浮点变量的初始默认值为0
字符串变量的默认值为空字符串
布尔型变量默认值false
切片,函数,指针变量的默认值为nil
- 变量初始化的标准格式`
var 变量名 类型 = 表达式
//例
var name string = "ashui"
var age int = 22
//一次初始化多个变量
var name, age = "ashui", 22
- 短变量声明
- 可用 := 声明并初始化变量
- 函数名和左边等号之间要用空格
- 如果变量已经用var声明过了,再用:=声明就会出现编译错误
ass := 1相当于
var ass int
ass = 1
package mainimport("fmt")
var m = 100
func main(){n := 10m := 200fmt.Println(m, n)
}
- 匿名变量
- 多重赋值时,若果想忽略某个值,用匿名变量
- 匿名变量用下划线—表示
package mainimport("fmt"
)
func foo() (int, string){return 10, "Q1mi"}func main(){x, _ := foo()_, y := foo()fmt.Println("x=", x)fmt.Println("y=", y)
}
输出>>>
x= 10
y= Q1mi
- 函数外的每个语句必须以关键词开始(var,const, func)
- := 不能使用在函数外
- —多用于占位,表示忽略值
c1:格式化字符串 - fmt.Sprintf (根据格式化参数生成格式化的字符串,并返回该字符串)
- 语法
fmt.Sprintf(格式化样式, 参数列表)
package mainimport ("fmt"
)func main(){var stockcode = 123var enddata = "2020-12-31"var url = "Code=%d & endData=%s"var target_url = fmt.Sprintf(url, stockcode, enddata)fmt.Println(target_url)
}
注:fmt.Sprintf()函数的返回值要先保存在一个变量中,在输出
- fmt.Printf()
package mainimport ("fmt"
)func main(){var stockcode = 123var enddata = "2020-12-31"var url = "Code=%d&endData=%s"fmt.Printf(url, stockcode, enddata)
}
- 以上结果均为
Code=123&endData=“2020-12-31”
3.2 常量
- 把变量的var换成const
- 常量在定义的时候必须赋值
- c2.值类型和引用类型
- - 值类型:int , float , bool , string他们的变量直接指向内存中的值
- 使用=将一个变量的值复制给另一个变量,实际上时拷贝了该值
- 值类型变量的值储存在堆中
- 一个引用类型的变量r1存储的时r1的值所在的内存地址
- 这个内存地址为指针
3.2.1iota
- iota是go语言的常量计数器,只能用于常量表达式
- iota在const关键字出现时被重置为0
- iota能简化定义,在定义枚举时很有用
- 使用下划线—跳过某些值
func main(){const(n1 = iotan2_n3)fmt.Println(n1, n2, n3)
输出结果:0 1 3
- iota声明中间插队
func main(){const(n1 = iotan2_n3)const n4 = iotafmt.Println(n1, n2, n3, n4)
}
输出:0 1 3 0
- 定义数量级
- 1<<10(表示将1的二进制表示向左移10位,由1变成了1000000000,也就是十进制的1024)
- 2<<2 2的二进制表示向左移2位,由10变成了1000,也就是十进制的8
func main(){const(_ = iotaKB = 1 << (10 * iota)MB = 1 << (10 * iota))fmt.Println(KB, MB)
}
输出:1024 1048576
- 多个iota定义在一行
func main(){const(a, b = iota + 1, iota + 2c, de, f)fmt.Println(a, b, c, d, e, f)
}
输出:1 2 2 3 3 4
4.数据类型
- 数据类型的出现是为了把数据分成所需内存不同的数据
Go语言中的基本数据类型包括:
1.布尔型(bool): 只有true和false两个值
2. 整型(int、int8、int16、int32、int64、uint、uint8、uint16、uint32、uint64): 表示整数值,其中int和uint的大小取决于底层计算机的字长
3. 浮点型(float32、float64): 表示小数值
4. 复数型(complex64、complex128): 由实数部分和虚数部分组成
5. 字符串型(string): 表示文本字符串
6. 字节数组(byte、rune): byte表示ASCII字符或二进制数据,rune表示Unicode字符除了以上基本数据类型,还有指针类型(pointer)、数组类型(array)、切片类型(slice)、字典类型(map)、通道类型(channel)等Go语言特有的数据类型。
【主打就是简洁】及其精炼的Go语言速成大法(1)相关推荐
- CYQ.Blog(QBlog) 单用户版本V3.0 发布下载[免费,简洁,高性能,双语言,8套皮肤,4种数据库支持]...
2019独角兽企业重金招聘Python工程师标准>>> 前言说明: 秋色园QBlog,一直以来,都发布多用户博客版本,今天,终于提升了一个power,发布单用户博客版本了. ...
- C语言字符糊到了一起,C语言速成及格课.docx
C语言速成及格课.docx 目录:1. C语言概要 2.变量 3.计算 4.判断 5.循环 6.函数 7.数组 8.指针 9.字符(串)附录1:学习C语言的方法.附录2:编程的一些技巧.附录3:使用电 ...
- 大数据之R语言速成与实战
什么是R语言? R语言由新西兰奥克兰大学的Ross Ihaka和Robert Gentleman两人共同发明.其词法和语法分别源自Scheme和S语言. R定义:一个能够自有有效的用于统计计算和绘图的 ...
- C语言速成笔记 —— 考点详解 知识点图解
C语言速成笔记 文章目录 C语言速成笔记 第一章 分置于循环 一.选择结构 1. if 语句 2. switch 语句 3. 条件操作符 二.循环结构 1. while 循环 2. do while ...
- iOS完全自学手册——[三]Objective-C语言速成,利用Objective-C创建自己的对象...
1.前言 上一篇已经介绍了App Delegate.View Controller的基本概念,除此之外,分别利用storyboard和纯代码创建了第一个Xcode的工程,并对不同方式搭建项目进行了比较 ...
- java html标枪正则,javascript语言速成
因为是个弱类语言.把他所有要点整理成一篇文章也应该没问题吧? 有一定C语言基础就够了 第一章:HTML和script HTML是超文本语,它以标枪 对应开始和结束. 超文本文件中,JavaScrip ...
- r语言rank降序_R语言速成之第一章 向量(编辑,排序,10个基本函数)
1.4向量的编辑 1.4.1扩展向量c() vc vc vc vc vc 注意:单独append(vc,num)不会改变vc的值 1.4.2改变元素的值直接引用后赋值 vc vc[1] vc[1:3] ...
- 【100 种语言速成】第 2 节:Emojicode
- 【100 种语言速成】第 4 节:Lua
最新文章
- 大厂Android面试,居然还问这些问题!
- 理解Linux中断 (2)【转】
- 通过重建Hosting系统理解HTTP请求在ASP.NET Core管道中的处理流程[上]:采用管道处理请求...
- 开源图像检索项目PicSearch is now an open source project
- Hybrid框架UI重构之路:三、工欲善其事,必先利其器
- VSCode 报错 Parsing error: x-invalid-end-tag
- 科技行业风投日趋谨慎:VR、机器学习和汽车值得关注
- threadx 信号量 应用_操作系统及ThreadX简介.ppt
- NB-IOT/Lora/Zigbee/WIFI/蓝牙无线组网方式的对比
- HTML试题及答案(总结)
- RocketMQ如何解决分布式事务
- 情怀奏不响民宿的狂想曲
- 基于AS3的水果机小游戏
- python excel插件_django使用插件下载excel的方法
- caffe 将数据(非图像和图像)转成lmdb格式的数据
- ftp文件传输有服务器吗,ftp文件传输有服务器吗
- mysql 子查询 性能_mysql子查询性能
- 上传任意文件或者上传漏洞
- 《网络运维 - 基础知识》
- Umi-—前端应用框架(Umi基础)
热门文章
- 重启Nginx,重启redis--记录
- 通用uart测试工具
- 某销售公司在年末的时候会向员工发放红包,发放的红包金额共有5种,获取的条件各不相同: 1) 五颗星红包,每人8000元,平均月绩效大于80件商品(>80),并且在本年度满勤; 2) 四颗星红包,每
- 风口浪尖的第三方打车软件:叫停还是合作?
- mariaDB 查看查询日志
- 破解手机的任意收费游戏
- python的循环语句
- Fastjson 漏洞分析
- 转载_我的Debian GNU/Linux安装全流程
- Spring中ApplicationContext的getBean()方法