Go(一)语言教程-基础

一、包

每个Go程序都是由包构成的。程序从main包开始运行。包名与导入路径的最后一个元素一致。例如,”math/rand” 包中的源码均以 package rand 语句开始。
1、import包的导入

包的导入使用import <package>

2、用圆括号组合了导入

import (‘fmt’,’math’)

1
2
3
4
5
6
7
8
9
10
11
12
13
//报名
package main

//导入包
import (
"fmt"
"math"
)

//程序入口 注意main方法必须在main包中
func main() {
fmt.Printf("Now you have %g problems.\n", math.Sqrt(7))
}

二、函数、变量、常量

1、函数
函数可以没有参数或接受多个参数。当连续两个或多个函数的已命名形参类型相同时,除最后一个类型以外,其它都可以省略。

func 函数名称([参数名 参数类型, …]) [(返回值类型,…)] {函数体…}

2、变量var
var 语句用于声明一个变量列表,跟函数的参数列表一样,类型在最后。

var 名称,… 类型

3、常量
常量的声明与变量类似,只不过是使用const关键字。可以是字符、字符串、布尔值或数值。不能用:=语法声明。

const 名称,… 类型

4、类型装换

表达式 T(v) 将值 v 转换为类型 T。
var i int = 42
var f float64 = float64(i)
var u uint = uint(f)

注意 :
在Go中要导出函数或变量需要函数或变量名称的首字母大写,首字母大写代表是Public,若要私有方法首字母小写即可。

示例 basics/fun.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
26
27
28
29
30
31
32
33
34
35
36
37
38
package basics

//加法 返回 x + y
func Add(x int,y int) int {
return x + y
}

//减法 返回 x - y
func Sub(x int,y int) int {
return x - y
}

//乘法 返回 x * y
func Multi(x int,y int) int {
return x * y
}

//除法 返回 x / y
func Div(x int,y int) int {
return x / y
}

//函数作为参数
func Customize(x, y int, cust func(int ,int) int) int{
return cust(x,y)
}

//多个返回值
func Swap(x, y int) (int, int){
return Div(x,y), x % y
}

//多个返回值 命名
func Swap2(x, y int) (a int, b int){
a = Div(x,y)
b = x % y
return
}

调用 main.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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
package main

import (
"Chapter1/basics"
"fmt"
"math"
)

//x % y
// x y 均是 int类型
func mol(x int,y int) int {
return x % y
}

//声明变量 全局变量不能使用 := 声明
var name = "GoLang";
var c, python, java bool;

func main() {
var index = 20;

fmt.Println(index)
fmt.Println(name,c,python,java)

fmt.Printf("9 的平方根是 %g \n", math.Sqrt(9))

//声明变量
x := 10
y := 3
f := mol

fmt.Printf("x + y = %d \n",basics.Add(x,y))
fmt.Printf("x - y = %d \n",basics.Sub(x,y))
fmt.Printf("x * y = %d \n",basics.Multi(x,y))
fmt.Printf("x / y = %d \n",basics.Div(x,y))
fmt.Printf("x 余 y = %d \n",basics.Customize(x,y,f))

a, b := basics.Swap(x, y)
fmt.Printf("a = %d ,b = %d \n",a , b)
}