Go语言基础概念,Kotlin系统入门与进阶

Go语言基础概念,Kotlin系统入门与进阶,第1张

Go语言基础概念,Kotlin系统入门与进阶 2、导出

在导入了一个包之后,就可以用其导出的名称来调用它。在 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码

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5672619.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存