本文是学校选修课程笔记
author: [email protected]
package main
import (
"fmt"
)
func main() {
fmt.Println("Hello World!")
}
package声明所属包名称
注意 一般所属包名称与所在目录名相同,main函数包名一定是main
package main //声明所属包名称,一般所属包名称与所在目录名相同,main函数包名一定是main
import导入标准库或第三方包
有单行导入和多行导入两种方式
//单行导入
import "pkg1"
import "pkg2"
//多行导入
import (
"fmt" //导入标准库,也可导入第三方包
"math"
"time"
"eqdis/input" //eqdis为自定义工程文件名,input为自定义包名
) //使用小括号,各项之间没有逗号
在LiteIDE里单行导入多个包时会被自动合并为多行导入格式
入口函数main函数
func main() {
fmt.Println("Hello World!") //直接输出
fmt.Printf("%d+%d=%d\n", 1, 1, 2) //格式化输出
}
var sum int //简单声明,默认初值为0,避免意外
var total int = 42 //声明并初始化
var label = "name" //类型推断,不需要程序员敲进去类型,此处推断为string类型
tag := "My" //短变量+类型推断,用于函数内部,不能作为全局变量
var c, d int = 35, 85 //可多变量一同赋值
var a,b *int //a,b均为int型指针
func main() {
a := 3
b := 4
max := 0
if a > b {
max = a
} else {
max = b
}
fmt.Println(max)
}
条件表达式无需括起来
if和else对应的语句块的大括号不能省略,哪怕只有一条语句
左大括号和if/else等控制结构在同一行
else不能单独成行,必须和if的右大括号一起
if后可以添加特征值获取语句,与特征值判断用分号隔开,这是golang用 ” ; “ 的地方之一
来看一个例子
func main() {
a := 3
b := 4
flag := min(b, a) //此处获取特征值,flag在上下文中都可取
if flag == 3 {
fmt.Println("hello")
} else {
fmt.Println("world")
}
}
func min(a, b int) int {
var min int
if a < b {
min = a
} else {
min = b
}
return min
}
上述main函数可以写成
func main() {
a := 3
b := 4
//可以添加特征值获取语句,与特征值判断用分号隔开,这是golang用;的地方之一
if flag := min(b, a); flag == 3 {//此处flag特征值仅可用于条件快内
fmt.Println("hello")
} else {
fmt.Println("world")
}
}
if condition1 {
// do something
} else if condition2 {
// do something else
}else {
// catch-all or default
}
func main() {
var result int
var condition byte = 'e' //byte类型相当于C语言中的char
switch condition {
case 'a', 'b':
result = 1
case 'e':
result = 2
default:
result = 0
}
fmt.Println(result)
}
fall-through不再是默认行为,符合条件的语句执行完后无需再加break即可自动结束分支过程
简化目标相同的分子条件,使用逗号分隔
分支条件不限于整数和字符,任何有效的表达式都可以作为分支条件(如下)
switch result := calculate(); true {
case result < 0:
/* negative */
case result > 0:
/* positive */
default:
/* zero */
}
switch result := calculate(); { //注意分号不能省略
/* ... */
}
go中只有for循环
循环条件不需要括起来
使用方法如下
//相当于一般的while循环
func main() {
x := 0
for x < 5 {
fmt.Println(x)
x++
}
}
func main() {
for x := 0; x < 5; x++ {
fmt.Println(x)
}
}
func main() {
x := 4
for {
fmt.Println(x)
x--
if x < 0 {
break
}
}
}
func main() {
x := []int{100, 101, 102}
for i, v := range x {
fmt.Println(i, ":", v)
}
}
func main() {
for i, v := range "Hello 世界" {
fmt.Printf("%d,%c\n", i, v) //%c表示Unicode字符格式输出
}
}
由上例可见,UTF-8中一个汉字占3B(字节)