你好,Go!
package main
import (
"fmt"
)
func main() {
fmt.Println("Hello, Go!")
}
和C语言相似,go语言的基本组成有:
- 包声明,编写源文件时,必须在非注释的第一行指明这个文件属于哪个包,如
package main。 - 引入包,其实就是告诉Go 编译器这个程序需要使用的包,如
import "fmt"其实就是引入了fmt包。 - 函数,和c语言相同,即是一个可以实现某一个功能的函数体,每一个可执行程序中必须拥有一个main函数。 变量,Go 语言变量名由字母、数字、下划线组成,其中首个字符不能为数字。
- 语句/表达式,在 Go 程序中,一行代表一个语句结束。每个语句不需要像 C 家族中的其它语言一样以分号 ; 结尾,因为这些工作都将由 Go 编译器自动完成。
- 注释,和c语言中的注释方式相同,可以在任何地方使用以 // 开头的单行注释。以 /* 开头,并以 */ 结尾来进行多行注释,且不可以嵌套使用,多行注释一般用于包的文档描述或注释成块的代码片段。
slice
Go 数组的长度不可改变,在特定场景中这样的集合就不太适用,Go中提供了一种灵活,功能强悍的内置类型切片("动态数组"),与数组相比切片的长度是不固定的,可以追加元素,在追加时可能使切片的容量增大。
var s []int
类似与声明一个数组,只不过不用填写它的长度
值得一提的是,切片必须先初始化才能使用!
package main
import "fmt"
func main() {
s := make([]string, 3)
s[0] = "a"
s[1] = "b"
s[2] = "c"
fmt.Println("get:", s[2]) // c
fmt.Println("len:", len(s)) // 3
// 使用append在尾部添加元素
s = append(s, "d")
s = append(s, "e", "f")
fmt.Println(s) // [a b c d e f]
c := make([]string, len(s))
// 将s复制给c
copy(c, s)
fmt.Println(c) // [a b c d e f]
fmt.Println(s[2:5]) // [c d e]
fmt.Println(s[:5]) // [a b c d e]
fmt.Println(s[2:]) // [c d e f]
good := []string{"g", "o", "o", "d"}
fmt.Println(good) // [g o o d]
}
package main
import (
"fmt"
"math/rand"
"time"
)
func main() {
maxNum := 100
var guess int
flag := false
// 使用一直在不断变化的时间作为我们的种子(时间戳)
rand.Seed(time.Now().UnixNano())
// 设置种子之后产生一个最大为100的整形
secretNumber := rand.Intn(maxNum)
fmt.Println("Please input your guess")
for i := 0; i < 5; i++ {
// 输入我们猜的数字
_, err := fmt.Scan(&guess)
// Go语言中处理错误的方法
if err != nil {
fmt.Println("Invalid input. Please enter an integer value")
return
}
if guess > secretNumber {
fmt.Println("You guess ", guess, "is larger than the secret number")
} else if guess < secretNumber {
fmt.Println("You guess ", guess, "is less than the secret number")
} else {
fmt.Println("You guess ", guess, "is right")
flag = true
}
if flag {
break
}
}
if !flag {
fmt.Println("You fail! The secret number is ", secretNumber) // 作弊模式
}
}
学习后写的一个简单的猜数游戏