1、go的hello world
package main
//申明开头,表示代码所属包,申明为main包,可以编译为二进制程序
import (
"fmt"
)
//导入格式化包,如果引入了包,则必须要用,不然会报错,主要为提高效率,追求极致
func main() {
fmt.Println("Hello, World!")
}
//左边的大括号不能自己单独启一行,右边的大括号不影响
//单行注释
/*
duo多行zhus注释
*/
//go区分大小写
//go的变量名以下划线和字母开头
2、go的变量申明
package main
import "fmt"
func main() {
//申明变量
var v1 int
var v2 int
var v3,v4 int
var (
v5 int
v6 int
)
//默认都是零值
fmt.Println(v1,v2,v3,v4,v5,v6)
}
3、go变量的初始化
package main
import (
"fmt"
"reflect"
)
func main() {
//初始化变量
//方式1
var v1 int = 10
//方式2
var v2 = 20
//方式3
v3 := 30
fmt.Println(v1,v2,v3)
fmt.Println("v3的类型为",reflect.TypeOf(v3))
//利用反射查看v3的类型
}
package main
import "fmt"
func main() {
//直接赋值
var v1 int
v1 = 10
//申明并赋值,这种方式只能在函数里用
v2 := 20
v3 := 30
//多重赋值
var v4,v5,v6 int
v4,v5,v6 = 40,50,50
fmt.Println(v1,v2,v3,v4,v5,v6)
}
4、go变量的赋值
package main
import "fmt"
func main() {
//直接赋值
var v1 int
v1 = 10
//申明并赋值
v2 := 20
v3 := 30
//多重赋值
var v4,v5,v6 int
v4,v5,v6 = 40,50,50
fmt.Println(v1,v2,v3,v4,v5,v6)
}
5、匿名变量
package main
import "fmt"
//(int,string),函数的返回值是2个,一个是int一个是字符串
func test() (int,string) {
return 444,"golang"
}
func main() {
//i, s := test()
//fmt.Println(i,s)
//test函数返回两个,在golang中,如果变量没有被使用,则会飘红,这里如果我们只用第二个变量,则可以用一个下划线来做匿名变量
//主要用来占位,这样,这个变量就算没有被使用,代码也不会飘红
_, s := test()
fmt.Println(s)
}
6、常量和枚举
package main
import "fmt"
//定义常量,必须要给一个确定的值,可确定的值比如 数字,字符串,布尔值
const filename = "chy.text"
//这样就会报错,因为a是一个变量,不是一个确定的值
//var a string
//a = "abc"
//const testname = a
func a() {
const (
v1 = "aaa"
v2 = "bbb"
filename = "chr.text"
)
//就近原则
fmt.Println(filename)
}
func b() {
//定义普通的枚举类型
const (
python = "aaa"
java = "bbb"
perl = "ccc"
)
fmt.Println(python,java,perl)
}
func c() {
//定义自增的枚举类型
//iota代表自增,从0开始,也叫做常量生成器
const (
test1 = iota
test2
test3
)
fmt.Println(test1,test2,test3)
}
func d() {
//iota还可以参与计算,下面的例子是位运算
const (
b = 1 << (10*iota)
//1 * 2 ^ (10 * iota)
kb
mk
gb
//tb
//pb
)
fmt.Println(b,kb,mk,gb)
}
func main() {
//a()
//b()
//c()
d()
}
复习代码
package main
import "fmt"
//定义一个函数,接受2个参数,参数1位int类型的a,参数为string类型的b
//函数返回两个值,其中第一个值为int类型,第二个值为string类型
func test1_1(a int,b string) (int,string) {
return a + 100,b + "abc"
}
func test1_2() {
const (
a = iota
b = iota
c = iota
d = iota
)
//下面这种写法和上面的写法的结果是一样的
//const (
// a = iota
// b
// c
// d
//)
fmt.Println(a,b,c,d)
//0 1 2 3
}
func test1_3() {
const (
a = iota //此时iota为0,也就是a=0
b = 100 //此时iota为1,但是b=100
c = 200 //此时iota为2,但是c=200
d //此时iota为3,但是d=200,和上一行的值保持一致
e //此时iota为4,但是e=200,和上一行的值保持一致
f = iota //此时iota为5,f=5
)
fmt.Println(a,b,c,d,e,f)
//0 100 200 200 200 5
}
func main(){
//1、申明一个int类型的变量
var test_1_a int
var test_1_b int
var test_1_c,test_1_d int
var (
test_1_e int
test_1_f int
)
fmt.Println(test_1_a,test_1_b,test_1_c,test_1_d,test_1_e,test_1_f)
//如果没有对int类型的变量赋值,那么这个int类型的变量为0
//0 0 0 0 0 0
//2、对变量进行赋值的三种方法
var test_1_1 int = 1
var test_1_2 = 2
test_1_3 := 3
fmt.Println(test_1_1,test_1_2,test_1_3)
//1 2 3
//此时这里的_就是匿名变量
_,res_a := test1_1(122,"dddd")
fmt.Println(res_a)
//ddddabc
c,d :=test1_1(1,"abc")
fmt.Println(c,d)
//定义一个常量,这个常量不能被赋值为一个变量,因为变量是会变的,常量是不能变的
const filename = "test1.go"
test1_2()
test1_3()
}
浙公网安备 33010602011771号