1. 包

每个go程序都由包构成

程序从main包开始运行

本程序通过导入路径“fmt”和“math/rand”来使用这两个包.

按照约定,包名与导入路径的最后一个元素一致。例如,‘math/rand’包中的源码均以package  rand语句开始.

代码:

vim packages.go

import(
	"fmt"
	"math/rand"
)

func main() {
	fmt.Println("I like the best number is ", rand.Intn(10))
}

运行代码:

2. 导入

次代码用圆括号将导入的包分成一组,这是‘分组’形式的导入语句。

当然你也可以编写多个导入语句,例如:

import "fmt"
import "math"

不过使用分组导入语句更好.。

代码:

package main

import(
	"fmt"
	"math"
)

func main() {
	fmt.Printf("new you have %g problems.\n", math.Sqrt(7))
}

运行:

3.导出名

在go中,如果是一个名字以大写字母开头,那么那就是已导出的。例如,Pizza就是个已导出名,Pi也同样,它导出自math包。

pizza和pi并未以大写字母开头,所有它们是未导出的。

在导入一个包时,你只能引用其中已导出的名字。任何【未导出】的名字在该包外均无法访问。

执行代码,观察错误信息。

要修复错误,将请math.pi改名为math.Pi,然后再试着执行一次。

代码:

package main

import(
	"fmt"
	"math"
)

func main(){
	fmt.Println(math.pi)
}

运行:

4.函数1

函数可接受零个或者多个参数

在本例中,add接受两个int类型的参数

注意类型的变量名在后面。

(参考这篇关于go生命语法的文章,了解为何使用这种类型声明的形式。)

代码:

package main

import "fmt"

func add(x int, y int) int {
	return x + y
}

func main(){
	fmt.Println(add(42, 13))
}

运行:

5.函数2

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

在本例中

x int, y int

被简写成:

x, y int

代码:

package main

import "fmt"

func add(x, y int) int {
	return x + y
}

func main() {
	fmt.Println(add(42, 13))
}

运行:

6.多返回值

函数可以返回任意数量的返回值

swap 函数返回了两个字符串。

代码:

package main

import "fmt"

func swap(x, y string)(string, string){
	return y, x
}

func main(){
	a, b := swap("hello", "world")
	fmt.Println(a,b)
}

运行:

7. 带名字的返回值

go的返回值可被命名,它们会被视作定义在函数顶部的变量。

返回值的命名应当能反映其含义,它可以作为文档使用。

没有参数的return语句会直接返回已命名的返回值,也就是【裸】返回值。

裸返回语句应当仅用在下面这样的短函数中。在长的函数中它们会影响代码的可读性。

代码:

package main

import "fmt"

func split(sum int)(x , y int){
	x = sum * 4 / 9
	y = sum -x
	return
}

func main(){
	fmt.Println(split(17))
}

运行:

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐