Go基础语法

一般结构

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
// 当前程序的包名
package main

// 导入其他包
import . "fmt"

// 常量定义
const PI = 3.14

// 全局变量的声明和赋值
var name = "gopher"

// 一般类型声明
type newType int

// 结构的声明
type gopher struct{}

// 接口的声明
type golang interface{}

// 由main函数作为程序入口点启动
func main() {
Println("Hello World!")
}

变量

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
package main
import "fmt"

var x1, y1 int
var ( // 这种因式分解关键字的写法一般用于声明全局变量
a1 int
b1 bool
)

var c1, d1 int = 1, 2
var e1, f1 = 123, "hello"

var h1 int // 全局变量 允许声明但不使用
// e1 := "weilai" // 只能被用在函数体内,而不可以用于全局变量的声明与赋值


func main() {
/*
多行注释
*/
// 一行注释
var a string = "weilai" // 声明一个变量并初始化
var b, c int = 1, 2 // 一次声明多个变量:
var d int // 声明变量,不初始化,一般情况下,值类型默认为 0, 布尔类型默认值为 false ,string 默认值为空字符串 ''
var z bool // bool 0值 false
fmt.Println(z)
fmt.Println(a) // 打印 a 换行
fmt.Print(b, c) // 不会换行
fmt.Println(d)
fmt.Println("hello") // 会换行
fmt.Println("world" )
fmt.Print("hello")
fmt.Print("world")

// var e int 这行存在 下行就会报错就会报错 no new variables on left side of :=
e := "weilai" // 等同于 var e string = "weilai" // 使用操作符 := 可以高效地创建一个新的变量,称之为初始化声明
f, g := 20, 30
f, g = g, f // 如果你想要交换两个变量的值,,两个变量的类型必须是相同。

// h := 40 // 声明但未使用 局部变量 会报错
fmt.Println("e=", e , ",f=" , f , ",g=" , g)
fmt.Printf("e=%s,f=%d,g=%d" , e , f , g) // Printf 是格式化输出
var vname1, vname2, vname3 = "v1", "v2", "v3"
fmt.Printf(vname1, vname2, vname3)
println(x1, y1, a1, b1, c1, d1, e1, f1)

_,numb,strs := numbers() //只获取函数返回值的后两个
fmt.Println(numb,strs)
}
//一个可以返回多个值的函数
func numbers()(int,int,string){
a , b , c := 1 , 2 , "str"
return a,b,c
}

/*

false
weilai
1 20
hello
world
helloworlde= weilai ,f= 30 ,g= 20
e=weilai,f=30,g=20v1%!(EXTRA string=v2, string=v3)0 0 0 false 1 2 123 hello
2 str

*/