//定义变量 a
a := "word"
如果前面已经定义了变量,后面就不能使用这种方式定义变量
//定义变量 a
var a string
//这样编译器会报错
a := "word"
//应该这样
a = "word"
# 一般条件语句中使用这种的较多
a := 2; a < 3; a++
var a int
var a, b, c int
//很常用的方式
var (
d int
e string
f float32
)
//函数 logInfo 返回两个值
func logInfo() (string, error) {
}
//调用 logInfo 函数, 不需要第一个返回值,需要第二个返回值,就可以使用 _ 忽略掉第一个返回值
_, err := logInfo()
//函数 logInfo 就是私有的,只有包内部可以调用
func logInfo() (string, error) {
}
//函数 LogError 就是公开的,包外部文件可以调用
func LogError() (string, error) {
}
//属性也是相同, User 就是公开的,属性Name也是公开的
type User struct {
Name string
}
//admin 就是私有的
type admin struct {
}
func calculator(a, b int, op string) int {
var result int
switch op {
case "+":
result = a + b
case "-":
result = a - b
case "*":
result = a * b
case "/":
result = a / b
default:
panic("unsupproted operator:" + op)
}
return result
}
for i := 1; i <= 100; i++ {
sum += i
}
func convert(n int) {
for ; n > 0; n /= 2 {
}
}
for {
}
a := "hello"
b := a + "word!"
var x int = 3
var y int64
//必须显示类型转换
y = int64(x)
同 switch true 一样. 与编写长的 if-then-else 链比,这种形式更清晰。
t := time.Now()
switch {
case t.Hour() < 12:
fmt.Println("Good morning!")
case t.Hour() < 17:
fmt.Println("Good afternoon.")
default:
fmt.Println("Good evening.")
}