一、go语言介绍
Go(又称 Golang)是 Google 的 Robert Griesemer,Rob Pike 及 Ken Thompson 开发的一种静态强类型、编译型语言。Go 语言语法与 C 相近,但功能上有:内存安全,GC(垃圾回收),结构形态及 CSP-style 并发计算。
二、第一个go语言程序
Hello World! 程序
package main //这个文件是程序的入口文件
import(
"fmt" //导入标准库里的fmt包:主要是屏幕的输入输出以及格式化字符串
)
func main(){
fmt.Println("Hello World!") //Println表示输出后会换行
}
三、go语言中的变量
3.1 变量的类型
1、bool类型:true和false;
2、数字类型,支持整型int和浮点型数字float,并且支持复数;
3、string字符串类型,是一串固定长度的字符连接起来的字符序列;
4、指针类型;
5、数组类型;
6、结构化类型;
7、Channel类型;
8、函数类型;
9、切片类型;
10、接口类型;
11、Map类型。
3.2变量的定义
1、使用var关键字
var 变量名字 变量类型
var age int = 20
//用var关键字定义多个变量
var (
a bool
b string
)
2、直接定义,会自动识别变量类型
age := 20
3、变量的交换
go语言变量的交换不像C语言需要再定义一个变量,和python相同
b,a = a,b
3.3、匿名变量
在Go语言中,匿名变量就是没有名字的变量;匿名变量不占用内存空间,不会分配内存,匿名变量与匿名变量之间也不会因为多次声明而无法使用。匿名变量的特点是一个下画线,“_”本身就是一个特殊的标识符,可以像其他标识符那样用于变量的声明或赋值,但任何赋给这个标识符的值都将被抛弃,因此这些值不能在后续的代码中使用,也不可以使用这个标识符作为变量对其它变量进行赋值或运算。
package main
import "fmt"
func abc()(int,int){
return 1,2
}
func main(){
x,y := abc()
fmt.Println(x,y)
//将y废弃
x,_ := abc()
fmt.Println(x)
//将x废弃
_,y := abc()
fmt.Println(y)
}
3.4、局部变量和全局变量
变量分为局部变量和全局变量,局部变量的作用域可以理解为是在大括号里的,而全局变量是在所有大括号之外定义的,作用在整体。go语言程序中,全局变量和局部变量名称可以相同,但是函数体内的局部变量会被优先考虑。
四、go语言中的常量
常量是一个简单值的标识符,在程序运行时,不会被修改的量的类型只能是布尔型,数字型(整数型、浮点数和复数)和字符串。
4.1、常量的定义
使用const关键字
//定义过后的常量,其值不可再改变
const hello string = "hello world"//显式定义
~~hello = "abc"//会报错~~
const hello2 = "hello world"//默认推导常量类型是隐式定义
const a,b,c = 1,true,6.66666//可以同时定义多个常量
4.2特殊常量iota
第一个iota值默认为0,但每当iota在新的一行被使用时,它的值都会自动加1
const(
a=iota//0
b=iota//1
c=iota//2
)
iota只会在const关键字再次出现时才会被重置为0,否则,在const括号内每新定义一个常量,iota都会累计加1
package main
import "fmt"
func main(){
const(
a=iota//iota=0
//一组常量中,如果某个常量没有初始值,默认和上一行一样
b//iota=1
c//iota=2
d//iota=3
e=1//e=1 iota=4
f=3//f=3 iota=5
g//g=3 iota=6
h//h=3 iota=7
i=iota//iota=8
j//iota=9
)
const(
k=iota//0
l//1
m//2
)
}
再续~