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_9 spring的依赖注入
新建工程 改成jar包 加入spring的依赖 复制之前的工程代码 再复制配置文件 fac factory整个删除 构造函数也删除.删除后的代码.如下 配置文件中的注释都删除掉 spring中的依赖注 ...
- 拉取代码产生冲突 && 切换分支
1.拉取代码产生冲突 项目中用的主要是 IDEA 编辑器,拉取代码时产生冲突的时候,就先 add + commit 一下,然后再拉取代码,这样子就不冲突了. 拉取过后再push一次. 2.切换一个新增 ...
- SI_WorkShop_V4安装手册
V4安装手册 第一步 启动workshopV4 解压workshopV4.rar,在解压后的目录中双击eclipse.exe启动workshopV4,启动画面如下图所示:(注:解压后第1次启动速度会慢 ...
- Activity 的 36 大难点,你会几个
前言 学 Android 有一段时间了,一直都只顾着学新的东西,最近发现很多平常用的少的东西竟让都忘了,趁着这两天,打算把有关 Activity 的内容以问题的形式梳理出来,也供大家查缺补漏. 本文中 ...
- 搜索框的测试checklist
一:简单搜索输入框测试用例1:不输入任何字符,点击搜索按钮,一般搜索出网站所有的信息 2:一般搜索输入框中的有文章显示,当鼠标点击时,文章消失 3:输入全角/半角中文字符(一个字符.超长字符.已经信息 ...
- Python学习之线程
8.5 线程 进程:开辟空间,加载数据,资源单位 线程:流水线,执行代码,执行单位 8.5.1 线程的概念 是操作系统能够进行运算调度的最小单位,线程包含在进程中,是进程中的执行单元,一个进程至少包含 ...
- ROS自动切换策略
自动切换策略,具体如下 监视地址:1.1.1.1 轮询时间:30s:超时时间:1000ms up /ip firewall nat set [/ip firewall nat find comment ...
- LPVOID 指针 转 int
1 DWORD WINAPI SockUDP::RecvThread(LPVOID lparam){ //套接字 正确:int sock= *(int*)(lparam); 错误:int ...
- linux 编程头文件搜索规则
包含头文件有两种写法,分别是:#include <stdio.h>#include "stdio.h" <>和""分别表示搜索位置的方式 ...
- Matcher和Pattern总结
Matcher.Pattern简介 java.util.regex是一个用正则表达式所订制的模式来对字符串进行匹配工作的类库包.它包括两个类:Pattern和Matcher Pattern 一个Pat ...