golang初识 和 变量,常量,iota
一、go语言与python
1. go语言
go语言语法固定,没有那么多花里胡哨的写法,语法也简单。一共25个关键字
本身支持高并发,数据计算,做后端天然有优势。(云计算,区块链,网络服务行业,新兴的公司基本都用go语言)
2. python
- 开发效率高,所以周期短
- 爬虫加数据分析
- 人工智能
二、变量相关
1. go语言的基本语法
package 后面跟的是包名,用来声明当前这个文件是属于哪个包。,如果是属于main包,则在执行这个文件后,会把该文件打包成一个
.exe程序。import 包名用来导入的包func main()是整个程序的入口,没有参数。在函数外部只能放置标识符(即 变量,常量,函数,类型)的声明
2. 标识符和关键字
标识符就是python中的变量名, 由字母数字和
_(下划线)组成,并且只能以字母和_开头 。关键字就是有各种特定作用的名字。如python中的
if def return等等。go语言里有25个关键字,并且还有37个保留字。我们不建议用关键字或保留字当做变量名即标识符。
3. 变量声明
- 类似前端JavaScript的变量声明方式
(1)声明变量时未指定初始值
格式1: var 变量名 变量类型
行尾无需分号
例如:
var name string
var age int
var isOk bool
格式2:批量声明
var (
a string
b int
c bool
d float32
)
已经声明的变量若未对其进行初始化,他们都会有一个默认值
- 数字类型是
0,字符串是空字符串, 布尔型变量默认为false。 切片、函数、指针变量的默认为nil
- 数字类型是
(2)声明变量时指定初始值
格式:
var 变量名 类型 = 表达式 例子:
var name string = "Q1mi"
var age int = 18 一次初始化多个变量:
var name, age = "Q1mi", 20
(3)声明变量时不指定类型
声明变量时不指定类型,则这个时候编译器会根据等号右边的值来推导变量的类型完成初始化
var name = "Q1mi"
var age = 18
(4)短变量声明
在函数内部,可以使用更简略的
:=方式声明并初始化变量package main import (
"fmt"
)
// 全局变量m
var m = 100 func main() {
n := 10
m := 200 // 此处声明局部变量m
fmt.Println(m, n)
}
(5)匿名变量
类似python中的解压缩时,用
_代替不需要的值。 匿名变量用一个下划线_表示func foo() (int, string) {
return 10, "Q1mi"
}
func main() {
x, _ := foo()
_, y := foo()
fmt.Println("x=", x)
fmt.Println("y=", y)
}
- 匿名变量不占用命名空间,不会分配内存,所以匿名变量之间不存在重复声明。 (在
Lua等编程语言里,匿名变量也被叫做哑元变量。
- 匿名变量不占用命名空间,不会分配内存,所以匿名变量之间不存在重复声明。 (在
(6)注意小结
- 函数外的每个语句都必须以关键字开始(var、const、func等)
:=不能使用在函数外。_多用于占位,表示忽略值
三、常量
什么是常量
常量是恒定不变的值,多用于定义程序运行期间不会改变的那些值
声明常量只是把
var换成了const,**常量在定义的时候必须赋值 **
1.普通声明常量方式:
const pi = 3.1415
const e = 2.7182
2.批量声明不同值的常量方式:
const (
pi = 3.1415
e = 2.7182
)
3.批量声明同一值的常量:const同时声明多个常量时,如果省略了值则表示和上面一行的值相同
const (
n1 = 100
n2
n3
)
四、iota
什么是
iotaiota是go语言的常量计数器,只能在常量的表达式中使用iota在const关键字出现时将被重置为0。const中每新增一行常量声明将使iota计数一次iota**可理解为const语句块中的行索引 **
5种实例:
1. 普通例子
const (
n1 = iota //0
n2 //1
n3 //2
n4 //3
) 2. 使用_跳过某些值
const (
n1 = iota //0
n2 //1
_
n4 //3
) 3.iota声明中间插队
const (
n1 = iota //0
n2 = 100 //1
n3 = iota //2
n4 //3
)
const n5 = iota //0 4. 定义数量级
// 这里的<<表示左移操作,1<<10表示将1的二进制表示向左移10位,也就是由1变成了10000000000,也就是十进制的1024。同理2<<2表示将2的二进制表示向左移2位,也就是由10变成了1000,也就是十进制的8
const (
_ = iota
KB = 1 << (10 * iota)
MB = 1 << (10 * iota)
GB = 1 << (10 * iota)
TB = 1 << (10 * iota)
PB = 1 << (10 * iota)
) 5. 多个iota定义在一行
const (
a, b = iota + 1, iota + 2 //1,2
c, d //2,3
e, f //3,4
)
golang初识 和 变量,常量,iota的更多相关文章
- GO中标识符,标识符,变量,常量,iota
参考:https://www.cnblogs.com/nickchen121/p/11517455.html 一.标识符与关键字 1.标识符 在编程语言中标识符就是程序员定义的具有特殊意义的词,比如变 ...
- golang语法学习(一):变量,常量以及数据类型
学习一门新的语言肯定是要从他的主要的语法開始,语法构成了整个程序设计的基础,从语法中我们也能够看到这门语言的一些特性.可是话说回来.语法这东西,不同的语言大同小异,所以这也对语法的记忆造成了一定的难度 ...
- [golang note] 变量常量
变量 • 变量声明 √ golang变量声明的关键字为var. √ golang变量声明时类型信息放置在变量名之后. ▶ 单个变量声明 ▪ 语法如下 var name type ▪ 示例如下 var ...
- iOS开发Swift篇(01) 变量&常量&元组
iOS开发Swift篇(01) 变量&常量&元组 说明: 1)终于要写一写swift了.其实早在14年就已经写了swift的部分博客,无奈时过境迁,此时早已不同往昔了.另外,对于14年 ...
- C#基础总结之一变量常量-if嵌套语句-witch结构-类型转换
//Console.WriteLine("Hello World"); //打印显示 //Console.ReadLine(); //接收输入的值 //Console.ReadKe ...
- 李洪强iOS开发Swift篇---11_变量&常量&元组
李洪强iOS开发Swift篇---11_变量&常量&元组 说明: 1)终于要写一写swift了.其实早在14年就已经写了swift的部分博客,无奈时过境迁,此时早已不同往昔了.另外,对 ...
- PHP 获得当前页面所有变量常量的值
get_defined_vars() - 返回由所有已定义变量所组成的数组,这个函数在二次开发的时候用起来非常给力: get_defined_constants();可以返回当前的所有常量 zend的 ...
- JAVA之旅(一)——基本常识,JAVA概念,开发工具,关键字/标识符,变量/常量,进制/进制转换,运算符,三元运算
JAVA之旅(一)--基本常识,JAVA概念,开发工具,关键字/标识符,变量/常量,进制/进制转换,运算符,三元运算 Android老鸟重新学一遍JAVA是什么感觉?枯燥啊,乏味啊,而且归纳写博客,都 ...
- TF:Tensorflow定义变量+常量,实现输出计数功能—Jason niu
#TF:Tensorflow定义变量+常量,实现输出计数功能 import tensorflow as tf state = tf.Variable(0, name='Parameter_name_c ...
随机推荐
- 阶段3 2.Spring_03.Spring的 IOC 和 DI_8 spring中bean的细节之生命周期
区分单例还是多例对象 单例的几个状态 初始化方法和销毁方法 设置成我们定义的方法 测试 有创建和初始化.但是没有销毁,.对象一直没有销毁的方法 main方法是一切应用程序的入门.当main方法结束后. ...
- jquery 教程网
- LeetCode.1002-寻找共有字符(Find Common Characters)
这是悦乐书的第375次更新,第402篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第236题(顺位题号是1002).给定仅由小写字母组成的字符串A,返回列表中所有字符串都 ...
- [BeiJingWc2008]Gate Of Babylon
<基尔伽美修>是人类历史上第一部英雄史诗,两河流域最杰出的文学作品之一.作品讲述了基尔伽美修一生的传奇故事.在动画Fate/staynight中,基尔伽美修与亚瑟王等传说中的英雄人物一起出 ...
- 前端,后端,UI,UE,UX,区别到底在哪里?
前端后端,到低区别在哪里? 其实后端是负责更为复杂的数据逻辑,表处理结构,如何实现一连串的数据提交,包括,数据验证,数据影响,数据计算,数据提取,,,等等. 那么前端负责的是什么呢?数据展示,数据验证 ...
- python3爬取动态网站图片
思路: 1.图片放在<image>XXX</image>标签中 2.利用fiddler抓包获取存放图片信息的js文件url 3.利用requests库获取html内容,然后获取 ...
- Python 入门之 软件开发规范
Python 入门之 软件开发规范 1.软件开发规范 -- 分文件 (1)为什么使用软件开发规范: 当几百行--大几万行代码存在于一个py文件中时存在的问题: 不便于管理 修改 可读性差 加载速度慢 ...
- 087、日志管理之 Docker logs (2019-05-09)
参考https://www.cnblogs.com/CloudMan6/p/7749304.html 高效的监控和日志管理对保持生产系统只需稳定的运行以及排查问题至关重要. 在微服务架构中,由 ...
- Ubantu 手动设置DSL连接
参考链接:https://m.linuxidc.com/Linux/2015-07/119774.htm
- Action实现prepareable接口后定义前置方法
// 访问每一个action的方法都会先调用此方法:前置方法 @Override public void prepare() throws Exception { System.out.println ...