Go语言学习第一课-变量常量与内建变量类型 - Go语言中文社区

Go语言学习第一课-变量常量与内建变量类型


Go作为专门为并发和大数据设计的语言,在编程界占据越来越重要的地位!不论是c/c++,php,java,重构首选语言就是Go

至于go语言的详细优缺点,将在以后深入学习后进行总结。现在首要任务是将Go语言基础用法学会。进而开发出相应的应用或网站

Go语言的hello world

我们在学习任何一门语言时一般都是从hello world学起

package main

import "fmt"
func  main()  {
	fmt.Println("hello world")
}

在hello world的代码中  我们看到,在一个go file中主要的三部分有  声明包名,引用包部分 ,main函数主体。

Go语言变量定义

package main

import "fmt"

//包内变量
var (aa = 3
ss = "kkk")//集中定义变量

//bb := true

func variableZeroValue()  {
	var a int
	var s string
	fmt.Printf("%d %qn",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()  {
	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)
}

在仔细阅读上述代码后,需要在变量定义中注意的问题有

  1. go语言通过var进行定义变量,先给出变量名,再指定变量类型(刚开始觉得反人类,但是go语言的这种定义更符合逻辑,毕竟在写代码时最先想到的是变量名再想到变量类型)
  2. go语言可以在赋值时自己匹配变量类型,且与其它语言不同的是,变量声明后会有默认赋值操作。
  3. go语言变量定义后一定要用!(真的是,对程序很好的规范,对后期维护减少了很多麻烦)
  4. go语言可以定义包内全局变量 ,虽然全局变量被视为洪水猛兽,但是Go语言的包机制,可以让全局变量的危险系数大大降低。

Go语言的内建变量

Go语言与其它语言重复的内建变量不做赘述。需要注意的是(u)就是unsigned代编有符合或无符号

go语言中让人陌生的主要是 

1、uintptr Go语言的指针类型,没错 ,go语言也是有指针的,鉴于指针不容易一次说清,我会专门详解指针

2、rune 细心一点发现Go语言怎么没有char类型。其实 rune就是Go语言的char类型,而且是char32位

3、complex 复数类型。相信学过python的同学可能对这个比较熟悉。我还是详解一下复数

我们在高中就学过这个复数的概念,引入复数后,对坐标轴的方向不单单是单一方向,而使得点进入二维,就像3+4i,突破一维数轴。每个数字单乘i后  相当于进行了一次逆时针的90°旋转。至于深层次的数学概念与应用也不详细展开了。为了更好的理解Go语言复数类型。我们以验证欧拉函数为例。(有兴趣的可以深究一下欧拉公式)

func euler()  {
	c := 3 + 4i
	fmt.Println(cmplx.Abs(c))
	//验证欧拉公式
	fmt.Println(cmplx.Pow(math.E , 1i*math.Pi)+1)
}

Go语言的类型转换

很多语言都可以隐式的进行类型转换,比如C语言,可以默认的从低精度到高精度转,浮点数除整数后,结果默认为浮点数

但是Go语言没有隐式强制类型转换,必须显示转换

func triangle()  {
	var a ,b int = 3,4
	var c int
	//go语言没有隐式强制类型转换,必须显示强制类型转换
	c = int(math.Sqrt(float64(a*a+b*b)))
	fmt.Println(c)
}

Go语言常量与枚举类型

与其它语言类似,Go语言的常量也是使用const关键字。

func consts()  {
	//go语言常量的定义
	const  filename  = "abc.txt"
	const  a,b  = 3,4
	var c  int
	c = int(math.Sqrt(a*a+b*b))
	fmt.Println(filename,c)
}

利用常量类型可以进而定义枚举类型

func enums()  {
	const (
		cpp  = iota
		java
		python
		golang
	)

	const (
		//作为表达式使用
		b = 1<<(10*iota)
		kb
		mb
		gb
		tb
		pb
	)

	fmt.Println(cpp,java,python,golang)
	fmt.Println(b,kb,mb,gb,tb,pb)
}

其中,iota作为自增,一般是0,1,2、、利用这个特性,我们可以对iota进行表达式的编辑,进而达到相应的目的。

版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/oliver233/article/details/82711268
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。
  • 发表于 2020-02-02 19:32:46
  • 阅读 ( 901 )
  • 分类:Go

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢