标签:返回值 死循环 \n tin 别名 map struct big 数值
main
。"math/rand"
。package main
import (
"fmt"
"math/rand"
)
func main() {
fmt.Println("My favorite number is", rand.Intn(10))
}
import "fmt"
import "math"
import (
"fmt"
"math"
)
math.pi
math.Pi
add
接受两个 int 类型的参数。package main
import "fmt"
func add(x int, y int) int {
return x + y
}
func main() {
fmt.Println(add(42, 13))
}
add
被缩写为,func add(x, y int) int {
return x + y
}
func swap(x, y string) (string, string) {
return y, x
}
var i int
var i, j int = 1, 2
:=
简洁赋值语句在明确类型的地方,可以用于替代 var 定义。i := 3
bool
string
int int8 int16 int32 int64
uint uint8 uint16 uint32 uint64 uintptr
byte // uint8 的别名
rune // int32 的别名 代表一个Unicode码
float32 float64
complex64 complex128
数值类型为 `0`,
布尔类型为 `false`,
字符串为 `""`(空字符串)。
var i int = 42
var f float64 = float64(i)
或者,更加简单的形式:
i := 42
f := float64(i)
const Pi = 3.14
常量组
const (
Big = 1 << 100
Small = Big >> 99
)
sum := 0
for i := 0; i < 10; i++ {
sum += i
}
fmt.Println(sum)
可以让前置、后置语句为空
sum := 1
for ; sum < 1000; {
sum += sum
}
fmt.Println(sum)
for
sum := 1
for sum < 1000 {
sum += sum
}
fmt.Println(sum)
for {
}
if x < 0 {
return x
}
if
便捷语句可以在条件之前执行一个简单的语句if v := math.Pow(x, n); v < lim {
return v
}
return lim
便捷语句定义的变量同样可以在任何对应的 else 块中使用
if v := math.Pow(x, n); v < lim {
return v
} else {
fmt.Printf("%g >= %g\n", v, lim)
}
// 这里开始就不能使用 v 了
return lim
switch os := runtime.GOOS; os {
case "darwin":
fmt.Println("OS X.")
case "linux":
fmt.Println("Linux.")
default:
// freebsd, openbsd,
// plan9, windows...
fmt.Printf("%s.", os)
}
func main() {
defer fmt.Println("world")
fmt.Println("hello")
}
会先打印hello 后打印world
func main() {
fmt.Println("counting")
for i := 1; i <= 10; i++ {
defer fmt.Println(i)
}
fmt.Println("done")
}
打印结果如下:
counting
done
10
9
8
7
6
5
4
3
2
1
i, j := 42, 2701
p := &i
fmt.Println(*p)
*p = 21
fmt.Println(i)
p = &j
*p = *p / 37
fmt.Println(j)
结果如下:
42
21
73
struct
)就是一个字段的集合。type Vertex struct {
X int
Y int
}
func main() {
v := Vertex{1, 2}
v.X = 4
fmt.Println(v.X) //结构体字段使用点号来访问。
}
var a [10]int //定义变量 a 是一个有十个整数的数组,数组不能改变大小
p := []int{2, 3, 5, 7, 11, 13}
p := []int{2, 3, 5, 7, 11, 13}
fmt.Println("p ==", p)
fmt.Println("p[1:4] ==", p[1:4])
// 省略下标代表从 0 开始
fmt.Println("p[:3] ==", p[:3])
// 省略上标代表到 len(s) 结束
fmt.Println("p[4:] ==", p[4:])
a := make([]int, 5) // len(a)=5
append
var a []int
a = append(a, 2, 3, 4)
var pow = []int{1, 2, 4, 8, 16, 32, 64, 128}
for i, v := range pow {
fmt.Printf("2**%d = %d\n", i, v)
}
type Vertex struct {
Lat, Long float64
}
var m map[string]Vertex
func main() {
m = make(map[string]Vertex)
m["Bell Labs"] = Vertex{
40.68433, -74.39967,
}
fmt.Println(m["Bell Labs"])
}
m := make(map[string]int)
m["Answer"] = 42
fmt.Println("The value:", m["Answer"])
m["Answer"] = 48
fmt.Println("The value:", m["Answer"])
delete(m, "Answer")
fmt.Println("The value:", m["Answer"])
v, ok := m["Answer"]
fmt.Println("The value:", v, "Present?", ok)
hypot := func(x, y float64) float64 {
return math.Sqrt(x*x + y*y)
}
fmt.Println(hypot(3, 4))
type MyFloat float64
func (f MyFloat) Abs() float64 {
if f < 0 {
return float64(-f)
}
return float64(f)
}
以下是结构体定义方法
type Vertex struct {
X, Y float64
}
func (v *Vertex) Abs() float64 {
return math.Sqrt(v.X*v.X + v.Y*v.Y)
}
接收者为指针的方法
type Vertex struct {
X, Y float64
}
func (v *Vertex) Scale(f float64) {
v.X = v.X * f
v.Y = v.Y * f
}
func (v *Vertex) Abs() float64 {
return math.Sqrt(v.X*v.X + v.Y*v.Y)
}
func main() {
v := &Vertex{3, 4}
v.Scale(5)
fmt.Println(v, v.Abs())
}
标签:返回值 死循环 \n tin 别名 map struct big 数值
原文地址:https://www.cnblogs.com/spectrelb/p/9032875.html