day4赋值
parent
7f6dff6034
commit
812850f2e6
|
@ -0,0 +1,57 @@
|
||||||
|
package main
|
||||||
|
|
||||||
|
import "fmt"
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
// 赋值有很多种办法
|
||||||
|
/*
|
||||||
|
x = 1 // 命名变量的赋值
|
||||||
|
*p = true // 通过指针间接赋值
|
||||||
|
person.name = "bob" // 结构体字段赋值
|
||||||
|
count[x] = count[x] * scale // 数组、slice或map的元素赋值
|
||||||
|
*/
|
||||||
|
|
||||||
|
// 可以使用 += -= *= 这种简短的赋值方法
|
||||||
|
var num1, num2 = 2, 3
|
||||||
|
// 效果等同 num2 = num2 + num1
|
||||||
|
num2 += num1
|
||||||
|
fmt.Println("num2: ", num2) // 5
|
||||||
|
|
||||||
|
// 元祖赋值
|
||||||
|
// 在var.go种我们使用的交换两个变量值就是元祖赋值
|
||||||
|
fmt.Println("num1, num2", num1, num2) // 2, 5
|
||||||
|
num1, num2 = num2, num1 // 交换
|
||||||
|
fmt.Println("num1, num2", num1, num2) // 5, 2
|
||||||
|
|
||||||
|
//或者是计算两个整数值的的最大公约数
|
||||||
|
gcd := func(x, y int) int {
|
||||||
|
for y != 0 {
|
||||||
|
x, y = y, x%y
|
||||||
|
}
|
||||||
|
return x
|
||||||
|
}
|
||||||
|
|
||||||
|
//或者斐波那契数列
|
||||||
|
fib := func(n int) int {
|
||||||
|
x, y := 0, 1
|
||||||
|
for i := 0; i < n; i++ {
|
||||||
|
x, y = y, x+y
|
||||||
|
}
|
||||||
|
return x
|
||||||
|
}
|
||||||
|
fmt.Println("GCD:21, 14: ", gcd(21, 14))
|
||||||
|
fmt.Println("fib:10: ", fib(10))
|
||||||
|
|
||||||
|
// 赋值语句是显式的赋值形式,但是程序中还有很多地方会发生隐式的赋值行为:
|
||||||
|
// 函数调用会隐式地将调用参数的值赋值给函数的参数变量,
|
||||||
|
// 一个返回语句会隐式地将返回操作的值赋值给结果变量,
|
||||||
|
// 一个复合类型的字面量也会产生赋值行为。
|
||||||
|
medals := []string{"gold", "silver", "bronze"}
|
||||||
|
fmt.Println(medals)
|
||||||
|
// 隐式地对slice的每个元素进行赋值操作,类似这样写的行为:
|
||||||
|
medals[0] = "gold"
|
||||||
|
medals[1] = "silver"
|
||||||
|
medals[2] = "bronze"
|
||||||
|
|
||||||
|
fmt.Println(medals)
|
||||||
|
}
|
Loading…
Reference in New Issue