变量定义

代码示例

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)
}

变量定义

  1. 使用 var 关键字定义
  2. 变量类型写在变量名后,如:var a int
  3. 可以同时定义多个变量,如: var s1, s2 string = "hello", "world"
  4. 可以使用 var() 集中定义变量
  5. 编译器可以自动识别变量类型
  6. 函数内 可以使用 := 定义变量类型

内建变量类型

  1. bool(布尔类型),string(字符串类型)
  2. (无符号)整型:(u)int,(u)int8,(u)int16,(u)int32,(u)int64
  3. 指针类型:uintptr
  4. byte(字节类型),rune(字符类型,相当于char类型,占32位)
  5. 浮点数:float32,float64(Go没有double类型
  6. 复数类型: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-基本语法的更多相关文章

  1. 软件测试之loadrunner学习笔记-02集合点

    loadrunner学习笔记-02集合点 集合点函数可以帮助我们生成有效可控的并发操作.虽然在Controller中多用户负载的Vuser是一起开始运行脚本的,但是由于计算机的串行处理机制,脚本的运行 ...

  2. 机器学习实战(Machine Learning in Action)学习笔记————02.k-邻近算法(KNN)

    机器学习实战(Machine Learning in Action)学习笔记————02.k-邻近算法(KNN) 关键字:邻近算法(kNN: k Nearest Neighbors).python.源 ...

  3. OpenCV 学习笔记 02 使用opencv处理图像

    1 不同色彩空间的转换 opencv 中有数百种关于不同色彩空间的转换方法,但常用的有三种色彩空间:灰度.BRG.HSV(Hue-Saturation-Value) 灰度 - 灰度色彩空间是通过去除彩 ...

  4. python3.4学习笔记(一) 基本语法 python3不向下兼容,有些语法跟python2.x不一样

    python3.4学习笔记(一) 基本语法 python3不向下兼容,有些语法跟python2.x不一样,IDLE shell编辑器,快捷键:ALT+p,上一个历史输入内容,ALT+n 下一个历史输入 ...

  5. ASP.NET MVC 学习笔记-2.Razor语法 ASP.NET MVC 学习笔记-1.ASP.NET MVC 基础 反射的具体应用 策略模式的具体应用 责任链模式的具体应用 ServiceStack.Redis订阅发布服务的调用 C#读取XML文件的基类实现

    ASP.NET MVC 学习笔记-2.Razor语法   1.         表达式 表达式必须跟在“@”符号之后, 2.         代码块 代码块必须位于“@{}”中,并且每行代码必须以“: ...

  6. 基于.net的分布式系统限流组件 C# DataGridView绑定List对象时,利用BindingList来实现增删查改 .net中ThreadPool与Task的认识总结 C# 排序技术研究与对比 基于.net的通用内存缓存模型组件 Scala学习笔记:重要语法特性

    基于.net的分布式系统限流组件   在互联网应用中,流量洪峰是常有的事情.在应对流量洪峰时,通用的处理模式一般有排队.限流,这样可以非常直接有效的保护系统,防止系统被打爆.另外,通过限流技术手段,可 ...

  7. Java学习笔记之---基础语法

    Java学习笔记之---基础语法 一. Java中的命名规范 (一)包名 由多个单词组成时,所有字母小写(例如:onetwo) (二)类名和接口 由多个单词组成时,所有单词首字母大写(例如:OneTw ...

  8. SaToken学习笔记-02

    SaToken学习笔记-02 如果排版有问题,请点击:传送门 常用的登录有关的方法 - StpUtil.logout() 作用为:当前会话注销登录 调用此方法,其实做了哪些操作呢,我们来一起看一下源码 ...

  9. Redis:学习笔记-02

    Redis:学习笔记-02 该部分内容,参考了 bilibili 上讲解 Redis 中,观看数最多的课程 Redis最新超详细版教程通俗易懂,来自 UP主 遇见狂神说 4. 事物 Redis 事务本 ...

  10. CUBRID学习笔记 41 sql语法之select

    cubrid的中sql查询语法 SELECT [ ] [{TO | INTO} ][FROM ] [WHERE ][GROUP BY {col_name | expr} [ASC | DESC], . ...

随机推荐

  1. tensorflow 导入gfile模型文件

    with tf.gfile.GFile(os.path.join(self.model_dir, 'ner_model.pb'), 'rb') as f: graph_def = self.tf.Gr ...

  2. 第6章 Selenium2-Java 自动化测试模型

    6.1  自动化测试模型介绍 6.1.1  线性测试 :其实就是单纯地来模拟用户完整的操作场景. 优势就是每一个脚本都是完整且独立的:   缺陷测试用例的开发与维护成本很高. 6.1.2  模块化驱动 ...

  3. k8s小工具

    1.Kubectx kubectx是一个在多集群和多命名空间的时候使用的非常好用的工具,kubectx与kubens绑定,kubectx用来在集群之间切换,kubens用来切换namespace. # ...

  4. [NOI 2017]蔬菜

    Description 题库链接 小 N 是蔬菜仓库的管理员,负责设计蔬菜的销售方案. 在蔬菜仓库中,共存放有 \(n\) 种蔬菜,小 N 需要根据不同蔬菜的特性,综合考虑各方面因素,设计合理的销售方 ...

  5. MAC ACL、RACL和VACL

    拓扑结构: 配置IP地址.VLAN及路由: SW1(config)#int range f0/1 - 2SW1(config-if-range)#switchport mode accessSW1(c ...

  6. windows上使用tensorboard

    因为我的环境变量设置的不是python3.5,所以走了一些弯路. 启动tensorboard后,graphs里总是什么都没有 最后再stackoverflow里找到答案 https://stackov ...

  7. 如何在 ASP.NET Core 测试中操纵时间?

    有时候,我们会遇到一些跟系统当前时间相关的需求,例如: 只有开学季才允许录入学生信息 只有到了晚上或者周六才允许备份博客 注册满 3 天的用户才允许进行一些操作 某用户在 24 小时内被禁止发言 很显 ...

  8. Hive原理总结(完整版)

    目录 课程大纲(HIVE增强) 3 1. Hive基本概念 4 1.1 Hive简介 4 1.1.1 什么是Hive 4 1.1.2 为什么使用Hive 4 1.1.3 Hive的特点 4 1.2 H ...

  9. 近乎产品MVC架构介绍-多租户模式

    应用的数据部分支持多租户,租户可以是呈现区域(PersentArea)也可以是另一个应用.在数据库设计方面采用最简单的方式,在应用数据表中增加TenantTypeId(存储对应的Application ...

  10. 【Spring】13、使用Spring 3的@value简化配置文件的读取

    Spring 3支持@value注解的方式获取properties文件中的配置值,大简化了读取配置文件的代码. 1.在applicationContext.xml文件中配置properties文件 & ...