美文网首页
go语言学习(2)--变量与常量

go语言学习(2)--变量与常量

作者: 神奇大叶子 | 来源:发表于2018-07-30 22:56 被阅读14次

任何编程语言都有变量,下面来学一学 go 的变量与其他语言有什么异同

go变量的基本类型

  • bool,string
  • (u)int,(u)int8,(u)int16,(u)int32,(u)int64,uintptr(指针)
  • byte,rune(go 的 char,4字节32位)
  • float32,float64,complex64,complex128(实部虚部都是64位)

一个比较大的区别, go 作为一种静态语言,没有 long,double 这种常见的类型,而是只有 int 和 float.
这是因为 go 语言崇尚简洁,你觉得 int 不够用可以用 int32 或者 int64,float64也是一样的道理
complex 很特别,别的语言都没有,看来 go 野心不小, python 的科学计算它也想掺一脚☺
下面来复习一下高中数学:
最美数学公式,欧拉公式
e+1=0
用 go 语言怎么表示呢

func euler() {
    fmt.Println(cmplx.Pow(math.E, 1i*math.Pi) + 1)
    fmt.Println(cmplx.Exp(1i*math.Pi) + 1)
    // (0+1.2246467991473515e-16i)
}
有兴趣的同学可以自己验证一下,因为计算机浮点数精度的问题,这里肯定是不等于0的

变量的声明

go语言有很多种声明变量的方法,下面一起来看一看
java 不同, go 的设计哲学就是简洁,变量的声明就体现了他的这个理念

/**
不赋初值
*/
func variableZeroValue() {
    var a int
    var s string
    // quotation 可以把引号打出来
    fmt.Printf("%d %q\n", a, s) // 0 ""
}

/**
赋初值
*/
func variableInitialValue() {
    var a, b int = 3, 4
    var s string = "abc"
    fmt.Println(a, b, s) // 3 4 abc
}

用一个 var 关键字就声明了一个变量,goscala一样是把变量名放前面,类型放后面,起初不太习惯,用多了也就习惯了,而且想一想,确实变量名比类型重要,确实应该放前面


go还有一个很好的地方--类型推断(java10也有了)

/**
类型推断
*/
func variableTypeDeduction() {
    var a, b, c, s = 3, 4, true, "def"
    fmt.Println(a, b, c, s) // 3 4 true def
}

/**
简写变量定义
*/
func variableShorter() {
    a, b, c, s := 3, 4, true, "def"
    b = 5
    fmt.Println(a, b, c, s) // 3 5 true def
}

由上面代码可知,声明一个变量我也可以不写出变量的类型,而是由编译器根据变量的值来自行推断变量的类型,这点和动态类型很相似,再也不用写冗长的类型声明了
go还有一种更简洁的写法就是用:来代替 var, 小伙伴们使用 go 的时候可以试试简写的声明变量的方法,真的很方便


刚才都是函数里的,也可以在函数外声明变量,不过函数外面就不能用简写的声明方式了

var (
    a = 3
    b = "str"
)

类型转换

func triangle() {
    var a, b int = 3, 4
    var c int
    c = int(math.Sqrt(float64(a*a + b*b))) // go 只有强制类型转换
    fmt.Println(c)                         // 5

}

注意,这里 math.Sqrt里需要传 float 类型,而 go 是没有隐式转换的,必须显式的转换

总结

  1. go没有 long和 double,但是可以指定 int 和 float 的长度,注意 int 不指定是根据系统来的,32位系统就是 int32,64位系统就是 int64,float 必须指定32或者64
  2. go可以用 var 关键字或者直接 :=来声明一个变量
  3. 在函数体外的时候不能用简写,只能用var关键字来声明变量
  4. go 语言必须显式的强制类型转换

上述代码均已上传至 github, 欢迎 star
https://github.com/yejunyu/golearn


image

相关文章

  • Go语言学习笔记,持续更新...

    Go 学习笔记 Go语言变量和常量 1. 标识符 2. 关键字 Go语言中有25个关键字 break ...

  • go语言学习(2)--变量与常量

    任何编程语言都有变量,下面来学一学 go 的变量与其他语言有什么异同 go变量的基本类型 bool,string ...

  • 【Golang 基础】Go 语言的变量与常量

    Go 语言的变量与常量 变量声明,初始化与赋值 (示例代码) 变量的声明格式:var <变量名称> [变量类型];...

  • 变量和枚举常量

    常量 1.在Go语言中和C语言一样可以通过const来定义常量2.变量的格式:const 变量名称 数据类型 = ...

  • Go语言探索 - 4(原创)

    Go语言基础系列博客用到的所有示例代码 在上一篇文章中,主要学习了Go语言的变量、指针、指针变量、常量以及类型转换...

  • Go语言学习基础笔记

    Go 1.声明变量 2.Go语言常量 3.运算符 4.for循环 5.Go函数 6.数组声明 7.语言指针 Go ...

  • 初识Go语言-1

    Go语言学习路径 初识Go语言 Go语言环境搭建与IDE安装 Go语言基础语法 Go语言数据类型 Go语言变量和常...

  • Go语言的变量与常量

    1.变量声明,初始化与赋值 2.变量可见性规则; 3.常量,常量的声明和iota的使用 变量声明:var 变量名 ...

  • Go语言的常量与变量

    数据类型 go语言支持常见的数据类型。 数字:go语言支持整型int和浮点型float32/float64。位运算...

  • 六、Go指针

    六、Go语言指针 1.使用&访问变量在内存中地址 2.指针 一个指针变量指向一个值的内存地址。 与变量和常量相同,...

网友评论

      本文标题:go语言学习(2)--变量与常量

      本文链接:https://www.haomeiwen.com/subject/wliqvftx.html