Go学习笔记02-基本语法
变量定义
代码示例
package main
import "fmt"
/* 此处定义的变量为包内变量,在包内有效
等效于
var aa = 3
var ss = "kkk"
var bb = true
*/
var (
aa = 3
bb = true
ss = "hahaha"
)
func variableZeroValue(){
/*
用var关键字定义变量
变量类型写在变量名后
*/
var a int
var s string
fmt.Printf("%d %q\n", a, s)
}
func variableInitialValue(){
//可以同时定义多个变量,同时赋初值
var a, b int = 3, 4
var s string = "abc"
fmt.Println(a, b, s)
}
func variableTypeDeduction(){
//可以省略变量类型,编译器会自动判别类型
var a, b, c, s = 3, 4, true, "def"
fmt.Println(a, b, c, s)
}
func variableShorter(){
//省略var关键字,用 := 定义变量,首次定义变量推荐这种方式
a, b, c, s := 3, 4, true, "def"
b = 5
fmt.Println(a, b, c, s)
}
func main(){
fmt.Println("Hello World!!!")
variableZeroValue()
variableInitialValue()
variableTypeDeduction()
variableShorter()
fmt.Println(aa, ss, bb)
}
变量定义
- 使用 var 关键字定义
- 变量类型写在变量名后,如:var a int
- 可以同时定义多个变量,如: var s1, s2 string = "hello", "world"
- 可以使用 var() 集中定义变量
- 编译器可以自动识别变量类型
- 函数内 可以使用 := 定义变量类型
内建变量类型
- bool(布尔类型),string(字符串类型)
- (无符号)整型:(u)int,(u)int8,(u)int16,(u)int32,(u)int64
- 指针类型:uintptr
- byte(字节类型),rune(字符类型,相当于char类型,占32位)
- 浮点数:float32,float64(Go没有double类型)
- 复数类型:complex64,complex128
复数回顾
定义:
\[i = \sqrt {-1} ,即 i^2 = -1\]
形如:\(c = a + bi\) 的数叫做复数,其中\(a\)称为实部,\(b\)称为虚部。
复数的模:
复数 \(c = a + bi\) 的模为
\[z = \left| a + bi \right| = \sqrt{a^2 + b^2}\]
\(i\) 的周期性:
\[i^2 = -1, i^3 = -i, i^4 = 1, i^5 = i\]
定义:
\[e^{i\varphi} = \cos \varphi + i \sin \varphi \\
\left| e^{i\varphi} \right| = \sqrt{\cos^2 \varphi + \sin^2 \varphi} = 1 \\
e^{i\pi} = -1, e^{\frac{3}{2}\pi i} = -i, e^{2 \pi i} = 1
\]
欧拉公式:
\[e^{i\pi} +1 = 0\]
代码验证:
package main
import (
"fmt"
"math"
"math/cmplx"
)
func eular() {
c := 3 + 4i
fmt.Println(cmplx.Exp(1i * math.Pi) + 1)
fmt.Println(cmplx.Abs(c))
}
func main() {
//fmt.Println("Hello World!!!")
eular()
}
//输出为:(0+1.2246467991473515e-16i)
强制类型转换
Go语言只有强制类型转换
import (
"fmt"
"math"
)
func triangle(){
var a, b int = 3, 4
var c int
//报错,go不会隐式转换类型
//c = math.Sqrt(float64(a * a + b * b))
//需要强制转换类型
c = int(math.Sqrt(float64(a * a + b * b)))
fmt.Println(c)
}
func main() {
triangle()
}
常量
Go语言中用关键字 const 定义变量,如:
const i = 12
可以一次定义多个常量,如:
const(
cpp = 0,
java = 1,
golang = 2,
python = 3,
javascript = 4
)
注:Go语言中不建议常量名为大写
枚举类型
Go中没有像Java中用于定义枚举类的关键字 enum,而是用 const 定义一组常量作为枚举类。
可以用 iota 定义一组自增的常量,并且可以参与运算,如:
/** 输出为0, 1, 2, 3, 4
还可以简写为
const (
cpp = iota
_
golang
python
javascript
)
*/
const (
cpp = iota
java
golang
python
javascript
)
//iota参与运算
const(
b = 1 << (10 * iota)
kb
mb
gb
tb
pb
)
Go学习笔记02-基本语法的更多相关文章
- 软件测试之loadrunner学习笔记-02集合点
loadrunner学习笔记-02集合点 集合点函数可以帮助我们生成有效可控的并发操作.虽然在Controller中多用户负载的Vuser是一起开始运行脚本的,但是由于计算机的串行处理机制,脚本的运行 ...
- 机器学习实战(Machine Learning in Action)学习笔记————02.k-邻近算法(KNN)
机器学习实战(Machine Learning in Action)学习笔记————02.k-邻近算法(KNN) 关键字:邻近算法(kNN: k Nearest Neighbors).python.源 ...
- OpenCV 学习笔记 02 使用opencv处理图像
1 不同色彩空间的转换 opencv 中有数百种关于不同色彩空间的转换方法,但常用的有三种色彩空间:灰度.BRG.HSV(Hue-Saturation-Value) 灰度 - 灰度色彩空间是通过去除彩 ...
- python3.4学习笔记(一) 基本语法 python3不向下兼容,有些语法跟python2.x不一样
python3.4学习笔记(一) 基本语法 python3不向下兼容,有些语法跟python2.x不一样,IDLE shell编辑器,快捷键:ALT+p,上一个历史输入内容,ALT+n 下一个历史输入 ...
- ASP.NET MVC 学习笔记-2.Razor语法 ASP.NET MVC 学习笔记-1.ASP.NET MVC 基础 反射的具体应用 策略模式的具体应用 责任链模式的具体应用 ServiceStack.Redis订阅发布服务的调用 C#读取XML文件的基类实现
ASP.NET MVC 学习笔记-2.Razor语法 1. 表达式 表达式必须跟在“@”符号之后, 2. 代码块 代码块必须位于“@{}”中,并且每行代码必须以“: ...
- 基于.net的分布式系统限流组件 C# DataGridView绑定List对象时,利用BindingList来实现增删查改 .net中ThreadPool与Task的认识总结 C# 排序技术研究与对比 基于.net的通用内存缓存模型组件 Scala学习笔记:重要语法特性
基于.net的分布式系统限流组件 在互联网应用中,流量洪峰是常有的事情.在应对流量洪峰时,通用的处理模式一般有排队.限流,这样可以非常直接有效的保护系统,防止系统被打爆.另外,通过限流技术手段,可 ...
- Java学习笔记之---基础语法
Java学习笔记之---基础语法 一. Java中的命名规范 (一)包名 由多个单词组成时,所有字母小写(例如:onetwo) (二)类名和接口 由多个单词组成时,所有单词首字母大写(例如:OneTw ...
- SaToken学习笔记-02
SaToken学习笔记-02 如果排版有问题,请点击:传送门 常用的登录有关的方法 - StpUtil.logout() 作用为:当前会话注销登录 调用此方法,其实做了哪些操作呢,我们来一起看一下源码 ...
- Redis:学习笔记-02
Redis:学习笔记-02 该部分内容,参考了 bilibili 上讲解 Redis 中,观看数最多的课程 Redis最新超详细版教程通俗易懂,来自 UP主 遇见狂神说 4. 事物 Redis 事务本 ...
- CUBRID学习笔记 41 sql语法之select
cubrid的中sql查询语法 SELECT [ ] [{TO | INTO} ][FROM ] [WHERE ][GROUP BY {col_name | expr} [ASC | DESC], . ...
随机推荐
- 使用Sandcastle工具为.NET项目工程生成一份项目帮助文档chm
Sandcastle的,由Microsoft创建的,是从创建MSDN风格的文档中使用的工具.NET程序集和关联的XML注释文件.目前的版本是2010年6月发布.这是命令行并没有GUI前端,项目管理功能 ...
- C# 语言历史版本和特性
C# 语言版本和对应特性,以及发布时间,.Net Framework 版本和 VS 版本 C# 4.0 和C# 5.0 熟悉点吧, VS10 ,VS12 和13 .Net Framework 4.0 ...
- CSS学习笔记07 盒子模型
1.盒子模型 所谓盒子模型就是把HTML页面中的元素看作是一个矩形的盒子,也就是一个盛装内容的容器.每个矩形都由元素的内容.内边距(padding).边框(border)和外边距(margin)组成. ...
- Redis实现分布式锁的正确使用方式(java版本)
Redis实现分布式锁的正确使用方式(java版本) 本文使用第三方开源组件Jedis实现Redis客户端,且只考虑Redis服务端单机部署的场景. 分布式锁一般有三种实现方式: 1. 数据库乐观锁: ...
- 【Java并发编程】14、Thread,线程说明
线程的状态:New.Runnable.Blocked.Waiting.Timed waiting.Terminated 1. RUNNABLE,对应"就绪"和"运行&qu ...
- Minitab系列 前言
Matlab 在有些时候太过去强大,强大到几乎所有的数学问题都可以解决. 在这里,Matlab就像数学版的Vim,对于一般的使用者还是不想编程,想要更加的直接直观的数学处理工具,这里向大家介绍mini ...
- 初识scss:配置与运行
1.SCSS和Sass Sass 和 SCSS 其实是同一种东西,我们平时都称之为 Sass.他们都是用Ruby开发Css预处理器,boostrap4已经将less换成了sass. 不同之处: 文件拓 ...
- Spring基于XML方式的使用
一.IoC配置 IoC的配置是通过Spring的xml文件的bean标签进行的. 1.bean标签介绍 bean标签一般是在xml文件进行配置的,xml文件一般样式如下: <?xml versi ...
- 【Mybatis】一对一实例
①创建数据库和表,数据库为mytest,表为father和child DROP TABLE IF EXISTS child; DROP TABLE IF EXISTS father; CREATE T ...
- Python十讲 - 第二讲:变量和基础数据类型
本讲主要内容 变量 字符串 数字和运算符 数据类型转换 2.1 变量 1. 变量是什么? 变量,是指把程序运行的中间结果临时的存在内存里,以便后续的代码调用,其值可以修改. 在python中,当变量被 ...