**#注:本文章越过go的安装与环境配置。 **

1.go的初始认识

特点:

  1. 开源的编程语言
  2. 简洁

用来做什么呢?

  1. 搭载web服务器,存储集群或类似用途的巨型中央服务器。
  2. 游戏服务端的开发很不错

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)相关推荐

  1. CYQ.Blog(QBlog) 单用户版本V3.0 发布下载[免费,简洁,高性能,双语言,8套皮肤,4种数据库支持]...

    2019独角兽企业重金招聘Python工程师标准>>> 前言说明:   秋色园QBlog,一直以来,都发布多用户博客版本,今天,终于提升了一个power,发布单用户博客版本了.   ...

  2. C语言字符糊到了一起,C语言速成及格课.docx

    C语言速成及格课.docx 目录:1. C语言概要 2.变量 3.计算 4.判断 5.循环 6.函数 7.数组 8.指针 9.字符(串)附录1:学习C语言的方法.附录2:编程的一些技巧.附录3:使用电 ...

  3. 大数据之R语言速成与实战

    什么是R语言? R语言由新西兰奥克兰大学的Ross Ihaka和Robert Gentleman两人共同发明.其词法和语法分别源自Scheme和S语言. R定义:一个能够自有有效的用于统计计算和绘图的 ...

  4. C语言速成笔记 —— 考点详解 知识点图解

    C语言速成笔记 文章目录 C语言速成笔记 第一章 分置于循环 一.选择结构 1. if 语句 2. switch 语句 3. 条件操作符 二.循环结构 1. while 循环 2. do while ...

  5. iOS完全自学手册——[三]Objective-C语言速成,利用Objective-C创建自己的对象...

    1.前言 上一篇已经介绍了App Delegate.View Controller的基本概念,除此之外,分别利用storyboard和纯代码创建了第一个Xcode的工程,并对不同方式搭建项目进行了比较 ...

  6. java html标枪正则,javascript语言速成

    因为是个弱类语言.把他所有要点整理成一篇文章也应该没问题吧? 有一定C语言基础就够了 第一章:HTML和script HTML是超文本语,它以标枪  对应开始和结束. 超文本文件中,JavaScrip ...

  7. 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] ...

  8. 【100 种语言速成】第 2 节:Emojicode

  9. 【100 种语言速成】第 4 节:Lua

最新文章

  1. 大厂Android面试,居然还问这些问题!
  2. 理解Linux中断 (2)【转】
  3. 通过重建Hosting系统理解HTTP请求在ASP.NET Core管道中的处理流程[上]:采用管道处理请求...
  4. 开源图像检索项目PicSearch is now an open source project
  5. Hybrid框架UI重构之路:三、工欲善其事,必先利其器
  6. VSCode 报错 Parsing error: x-invalid-end-tag
  7. 科技行业风投日趋谨慎:VR、机器学习和汽车值得关注
  8. threadx 信号量 应用_操作系统及ThreadX简介.ppt
  9. NB-IOT/Lora/Zigbee/WIFI/蓝牙无线组网方式的对比
  10. HTML试题及答案(总结)
  11. RocketMQ如何解决分布式事务
  12. 情怀奏不响民宿的狂想曲
  13. 基于AS3的水果机小游戏
  14. python excel插件_django使用插件下载excel的方法
  15. caffe 将数据(非图像和图像)转成lmdb格式的数据
  16. ftp文件传输有服务器吗,ftp文件传输有服务器吗
  17. mysql 子查询 性能_mysql子查询性能
  18. 上传任意文件或者上传漏洞
  19. 《网络运维 - 基础知识》
  20. Umi-—前端应用框架(Umi基础)

热门文章

  1. 重启Nginx,重启redis--记录
  2. 通用uart测试工具
  3. 某销售公司在年末的时候会向员工发放红包,发放的红包金额共有5种,获取的条件各不相同:   1) 五颗星红包,每人8000元,平均月绩效大于80件商品(>80),并且在本年度满勤; 2) 四颗星红包,每
  4. 风口浪尖的第三方打车软件:叫停还是合作?
  5. mariaDB 查看查询日志
  6. 破解手机的任意收费游戏
  7. python的循环语句
  8. Fastjson 漏洞分析
  9. 转载_我的Debian GNU/Linux安装全流程
  10. Spring中ApplicationContext的getBean()方法