[b]Constants[/b]
常量
Constants are declared like variables, but with the const keyword.
常量像变量一样声明,但是用常量关键字const
Constants can be character, string, boolean, or numeric values.
常量可以是字节,字符串,布尔 或数字
输出:
Hello 世界
Happy 3.14 Day
Go rules? true
[b]Numeric Constants[/b]
数值常量
Numeric constants are high-precision values.
数值常量是高精度值
An untyped constant takes the type needed by its context.
未定义类型常量根据上下文来确定类型
Try printing needInt(Big) too.
也可以试着输出printing needInt(Big)
输出:
21
0.2
1.2676506002282295e+29
fmt.Println(needInt(Big))
prog.go:19: constant 1267650600228229401496703205376 overflows int
[b]For[/b]
Go has only one looping construct, the for loop.
Go只有一个循环管结构体就是for循环
The basic for loop looks as it does in C or Java, except that the ( ) are gone (they are not even optional) and the { } are required.
基本的for循环看起来和C或Java,除了()不见了,()是可选项,但是{}是必须的
输出:
45
As in C or Java, you can leave the pre and post statements empty.
像C或Java,你可以设置前后都是空
输出:
1024
At that point you can drop the semicolons
如果是那样的话你可以去掉分号
If you omit the loop condition, it loops forever.
如果你省略了循环条件,死循环
And with no clauses at all, the semicolons can be omitted, so an infinite loop is compactly expressed.
根本没有语句的话,分号省略,于是一个无限循环可以简洁的表示
[b]If[/b]
The if statement looks as it does in C or Java, except that the ( ) are gone (they are not even optional) and the { } are required.
If语句看起来和在C或Java中一样,除了不见了()
(Sound familiar?)
看起来很眼熟啊?哈哈
输出:
1.4142135623730951 2i
Like for, the if statement can start with a short statement to execute before the condition.
像for,if语句能在条件前执行段语句
Variables declared by the statement are only in scope until the end of the if.
语句的变量声明的范围直到if结束
输出:
9 20
Variables declared inside an if's short statement are also available inside any of the else blocks.
在if's里的变量声明在else块里也可用
输出:
27 >= 20
9 20
常量
Constants are declared like variables, but with the const keyword.
常量像变量一样声明,但是用常量关键字const
Constants can be character, string, boolean, or numeric values.
常量可以是字节,字符串,布尔 或数字
package main
import "fmt"
const Pi = 3.14
func main() {
const World = "世界"
fmt.Println("Hello", World)
fmt.Println("Happy", Pi, "Day")
const Truth = true
fmt.Println("Go rules?", Truth)
}
输出:
Hello 世界
Happy 3.14 Day
Go rules? true
[b]Numeric Constants[/b]
数值常量
Numeric constants are high-precision values.
数值常量是高精度值
An untyped constant takes the type needed by its context.
未定义类型常量根据上下文来确定类型
Try printing needInt(Big) too.
也可以试着输出printing needInt(Big)
package main
import "fmt"
const (
Big = 1<<100
Small = Big>>99
)
func needInt(x int) int { return x*10 + 1 }
func needFloat(x float64) float64 {
return x*0.1
}
func main() {
fmt.Println(needInt(Small))
fmt.Println(needFloat(Small))
fmt.Println(needFloat(Big))
}
输出:
21
0.2
1.2676506002282295e+29
fmt.Println(needInt(Big))
prog.go:19: constant 1267650600228229401496703205376 overflows int
[b]For[/b]
Go has only one looping construct, the for loop.
Go只有一个循环管结构体就是for循环
The basic for loop looks as it does in C or Java, except that the ( ) are gone (they are not even optional) and the { } are required.
基本的for循环看起来和C或Java,除了()不见了,()是可选项,但是{}是必须的
package main
import "fmt"
func main() {
sum := 0
for i := 0; i < 10; i++ {
sum += i
}
fmt.Println(sum)
}
输出:
45
As in C or Java, you can leave the pre and post statements empty.
像C或Java,你可以设置前后都是空
package main
import "fmt"
func main() {
sum := 1
for ; sum < 1000; {
sum += sum
}
fmt.Println(sum)
}
输出:
1024
At that point you can drop the semicolons
如果是那样的话你可以去掉分号
package main
import "fmt"
func main() {
sum := 1
for sum < 1000 {
sum += sum
}
fmt.Println(sum)
}
If you omit the loop condition, it loops forever.
如果你省略了循环条件,死循环
package main
func main() {
for ; ; {
}
}
And with no clauses at all, the semicolons can be omitted, so an infinite loop is compactly expressed.
根本没有语句的话,分号省略,于是一个无限循环可以简洁的表示
package main
func main() {
for {
}
}
[b]If[/b]
The if statement looks as it does in C or Java, except that the ( ) are gone (they are not even optional) and the { } are required.
If语句看起来和在C或Java中一样,除了不见了()
(Sound familiar?)
看起来很眼熟啊?哈哈
package main
import (
"fmt"
"math"
)
func sqrt(x float64) string {
if x < 0 {
return sqrt(-x) + "i"
}
return fmt.Sprint(math.Sqrt(x))
}
func main() {
fmt.Println(sqrt(2), sqrt(-4))
}
输出:
1.4142135623730951 2i
Like for, the if statement can start with a short statement to execute before the condition.
像for,if语句能在条件前执行段语句
Variables declared by the statement are only in scope until the end of the if.
语句的变量声明的范围直到if结束
package main
import (
"fmt"
"math"
)
func pow(x, n, lim float64) float64 {
if v := math.Pow(x, n); v < lim {
return v
}
return lim
}
func main() {
fmt.Println(
pow(3, 2, 10),
pow(3, 3, 20),
)
}
输出:
9 20
Variables declared inside an if's short statement are also available inside any of the else blocks.
在if's里的变量声明在else块里也可用
package main
import (
"fmt"
"math"
)
func pow(x, n, lim float64) float64 {
if v := math.Pow(x, n); v < lim {
return v
} else {
fmt.Printf("%g >= %g\n", v, lim)
}
// can't use v here, though
return lim
}
func main() {
fmt.Println(
pow(3, 2, 10),
pow(3, 3, 20),
)
}
输出:
27 >= 20
9 20