在导入了一个包之后,就可以用其导出的名称来调用它。在 Go 中,首字母大写的名称是被导出的。
Foo
和 FOO
都是被导出的名称。名称 foo
是不会被导出的。执行代码。然后将 math.pi
改名为 math.Pi
再试着执行一下。
package main
import (
“fmt”
“math”
)
func main() {
fmt.Println(math.pi)
}
3. 函数
1、函数用法(1)
函数可以没有参数或接受多个参数。
在这个例子中,“add” 接受两个 int 类型的参数。
注意类型在变量名 _之后_。
package main
import “fmt”
func add(x int, y int) int {
return x + y
}
func main() {
fmt.Println(add(42, 13))
}
2、函数用法(2)
当两个或多个连续的函数命名参数是同一类型,则除了最后一个类型之外,其他都可以省略。
在这个例子中 ,
x int, y int
被缩写为
x, y int
package main
import “fmt”
func add(x, y int) int {
return x + y
}
func main() {
fmt.Println(add(42, 13))
}
3、new 函数
表达式 new(T) 分配了一个零初始化的 T 值,并返回指向它的指针。
var t *T = new(T)
或
t := new(T)
package main
import “fmt”
type Vertex struct {
X, Y int
}
func main() {
v := new(Vertex)
fmt.Println(v)
v.X, v.Y = 11, 9
fmt.Println(v)
}
4、函数为值
函数也是值。Function values
package main
import (
“fmt”
“math”
)
func main() {
hypot := fun
《Android学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义》
【docs.qq.com/doc/DSkNLaERkbnFoS0ZF】 完整内容开源分享
c(x, y float64) float64 {
return math.Sqrt(xx + yy)
}
fmt.Println(hypot(3, 4))
}
5、函数的闭包
并且函数是完全闭包的。
函数 adder 返回一个闭包。每个闭包被绑定到了特定的 sum 变量上。
package main
import “fmt”
func adder() func(int) int {
sum := 0
return func(x int) int {
sum += x
return sum
}
}
func main() {
pos, neg := adder(), adder()
for i := 0; i < 10; i++ {
fmt.Println(
pos(i),
neg(-2*i),
)
}
}
6、练习:斐波纳契闭包现在来通过函数做些有趣的事情。
实现一个 fibonacci
函数,返回一个函数(一个闭包)可以返回连续的斐波纳契数。
package main
import “fmt”
// fibonacci 函数会返回一个返回 int 的函数。
func fibonacci() func() int {
var count,sum1,sum2 int = 0,1,1
return func() int {
switch count {
// 0和1,fib =1
case 0,1:
count++;
default:
sum1,sum2 = sum2, sum1+sum2
}
return sum2
}
}
func main() {
f := fibonacci()
for i := 0; i < 10; i++ {
fmt.Println(f())
}
}
4.返回值 (1/2)
1、多返回值
函数可以返回任意数量的返回值。
这个函数返回了两个字符串。
package main
import “fmt”
func swap(x, y string) (string, string) {
return y, x
}
func main() {
a, b := swap(“hello”, “world”)
fmt.Println(a, b)
}
2、命名返回值函数接受参数。在 Go 中,函数可以返回多个“结果参数”,而不仅仅是一个值。它们可以像变量那样命名和使用。
如果命名了返回值参数,一个没有参数的 return
语句,会将当前的值作为返回值返回。
package main
import “fmt”
func split(sum int) (x, y int) {
x = sum * 4 / 9
y = sum - x
return
}
func main() {
fmt.Println(split(17))
}
5. 变量的声明 (1/3)
1、变量
var
语句定义了一个变量的列表;跟函数的参数列表一样,类型在后面。
package main
import “fmt”
var x, y, z int
var c, python, java bool
func main() {
fmt.Println(x, y, z, c, python, java)
}
2、初始化变量变量定义可以包含初始值,每个变量对应一个。
如果初始化是使用表达式,则可以省略类型;变量从初始值中获得类型。
package main
import “fmt”
var x, y, z int = 1, 2, 3
var c, python, java = true, false, “no!”
func main() {
fmt.Println(x, y, z, c, python, java)
}
3、短声明变量在函数中,`:=` 简洁赋值语句在明确类型的地方,可以用于替代 var
定义。
(`:=` 结构不能使用在函数外,函数外的每个语法块都必须以关键字开始。)
package main
import “fmt”
func main() {
var x, y, z int = 1, 2, 3
c, python, java := true, false, “no!”
fmt.Println(x, y, z, c, python, java)
}
6.基本数据有哪些 (1/1)
1、基本类型
Go 的基本类型有Basic types
bool
string
int int8 int16 int32 int64
uint uint8 uint16 uint32 uint64 uintptr
byte // uint8 的别名
rune // int32 的别名
// 代表一个Unicode码
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)