注意:①go语言以包为单位
②每个文件必须先声明包
③程序想要运行必须得有main包,而且写在main方法里
一、变量
1、导入包后,必须要使用,否则报错
2、 变量的声明的格式: var 变量名 类型
注意:变量声明过后,必须要使用
可以同时声明多个变量: var a ,b int
3、变量的初始化
var b int = 10;//初始化
b = 20 ;//赋值
4、自动推导类型,要求是必须得初始化,通过初始化的值推断类型
语法: 变量名:=值
举例: c := 30
fmt.Println(" %T",c) ------>%T就是打印变量所属的类型
注意: 在使用完自动推到类型后,不能再次声明这个变量了
与赋值的区别:
自动推导只能用一次,赋值可以是多次
5、Println与Printf的区别:与java的类似
6,多重初始化
a,b := 10,20
go语言实现值的交换
i := 10
j := 20
i, j = j, i
_匿名变量:丢弃数据不处理, 只有配合函数的返回值使用才有价值:比如,一个函数的返回值有多个,你只需要用一个,那句可以用匿名变量
temp, _ := i, j------->这样j的值就没了
二、常量
变量的声明需要 var
常量的声明用const
下面的声明b的时候没有用:
多个不同类型的变量的批量声明:
原本是: var a int
var b float64
现再可以: var( ------里面也可以自动推到类型
a int
b float64
)
常量也是一样的
注释代码:ctrl+\
三、iota枚举
1、iota也称作为常量自动生成器,每一行自动累加1
2、iota是给常量赋值使用的
const(
a = iota //0
b= iota //1
c = iota //2
)
3、iota遇到const重置为0
const d = iota ------d为0
4、如果是在同一行,值是一样的
const(
i = iota //0
a,b,c = iota,iota,iota //a,b,c都是1
d = iota //d是2
)
四、数据类型
常用的是: bool,byte ,int uint,flaot64,string
字符类型
var ch byte
ch = 97----------->a
或者这样赋值: ch = 'a'
'\'以反斜杠开头的字符都是转义字符
字符串操作
var str string
str = "abc"
他包含一个内建函数,len(字符串),表示有几个字符
fmt.Println("len() =",len(str))
字符和字符串的区别
字符串都是隐藏了一个结束符的,'\0'
例如: str = " a "--------就是由‘a’和‘\0’构成的
选择字符串中的某一个字符: str[0]
复数类型:可以进行实数和虚数的计算等
var t complex128
t = 2.1+31.2i
取 实部是 real(t),取虚部 imag(t)
fmt格式化
%v是自动匹配格式
%c, %T,% ,%s,%f
输入
fmt.Scanf("%d",&a)简便格式: fmt.Scan(& a)
类型别名☆非常重要
type
例如:
//给int64起一个别名交bigint
type bigint int64
var a bigint
fmt.Printf("%T\n",a)-------->bigint
取地址符:&
取值符: *
流程控制结构
if:
s := "zhang"
if s== "zhang"{//左括号必须和if同一行
}
if可以支持一个初始化语句,初始化语句和判断条件一分号分割
if a:10 ; a==10{
} else if a>10{
}else{
}
switch
num := 1
switch num{
case 1:
fmt.Println()
break //go语言还是保留了break关键字,不写的化也是默认包含了
fallthrough //这是是不会跳出switch,会接着下面执行
case 2: .....
case 3: .....
defalut :
}
//也可以支持初始化语句,
switch num : =10; num{
}
//甚至可以放条件
score := 85
switch{
case score>90: ......
case socre<80: ........
}
for
for i : = 1; i<=10 ; i++{
}
range
str=" abc "
打印str每一个字符
for i:= 0; i<len(str); i++{
}
//使用迭代打印每个元素,range默认是返回两个值:一个元素的位置,一个是元素的本省
for i, data := range str{
fmt.Printn(" 第%d个是%c ", i, data)
}
//甚至可以省略
for i := range str{ //这样默认是第二个返回值是 __ (丢弃)
fmt.Println(" 第%d个是%c ", i, str[i])
}