首页 编程 软件学院 查看内容

一刻钟学会 Go 语言

2019-5-5 16:53 |来自: 互联网 1621 0

摘要: 大型现实非严肃主义现场 一刻钟与你分享优质技术架构与见闻,做一个有剧情的程序员 关注可第一时间了解更多精彩内容,定期有福利相送哟。 发明Go语言是出于更好地完成工作的需要。Go不是计算机科学的最新发展潮流,但它却提供了解决现实问题的最新最快的方法。 Go拥有命令式语言的静态类型,编译很快,执行也很快,同时加入了对于目前多核CPU的并发计算支持,也有相应的特性来实现大规模编程。
关键词: 函数 变量 Println String fmt int func 类型 参数

微信公众号: IT一刻钟

大型现实非严肃主义现场

一刻钟与你分享优质技术架构与见闻,做一个有剧情的程序员

关注可第一时间了解更多精彩内容,定期有福利相送哟。

发明Go语言是出于更好地完成工作的需要。Go不是计算机科学的最新发展潮流,但它却提供了解决现实问题的最新最快的方法。

Go拥有命令式语言的静态类型,编译很快,执行也很快,同时加入了对于目前多核CPU的并发计算支持,也有相应的特性来实现大规模编程。

Go语言有非常棒的标准库,还有一个充满热情的社区。

有编程经验的小伙伴,朗诵以下代码块,完成Go语言快速入门。

(手机端不宜观摩,建议收藏后电脑端观摩)

// 单行注释
/* 多行
注释 */


// 导入包的子句在每个源文件的开头。
// Main比较特殊,它用来声明可执行文件,而不是一个库。
package main

// Import语句声明了当前文件引用的包。
import (
"fmt" // Go语言标准库中的包
"io/ioutil" // 包含一些输入输出函数
m "math" // 数学标准库,在此文件中别名为m
"net/http" // 一个web服务器包
"os" // 系统底层函数,如文件读写
"strconv" // 字符串转换
)

// 函数声明:Main是程序执行的入口。
// 不管你喜欢还是不喜欢,反正Go就用了花括号来包住函数体。
func main() {
// 往标准输出打印一行。
// 用包名fmt限制打印函数。
fmt.Println("天坑欢迎你!")

// 调用当前包的另一个函数。
beyondHello()
}

// 函数可以在括号里加参数。
// 如果没有参数的话,也需要一个空括号。
func beyondHello() {
var x int // 变量声明,变量必须在使用之前声明。
x = 3 // 变量赋值。
// 可以用:=来偷懒,它自动把变量类型、声明和赋值都搞定了。
y := 4
sum, prod := learnMultiple(x, y) // 返回多个变量的函数
fmt.Println("sum:", sum, "prod:", prod) // 简单输出
learnTypes() // 少于y分钟,学的更多!
}

/* <- 快看快看我是跨行注释_(:з」∠)_
Go语言的函数可以有多个参数和 *多个* 返回值。
在这个函数中, `x`、`y` 是参数,
`sum`、`prod` 是返回值的标识符(可以理解为名字)且类型为int
*/

func learnMultiple(x, y int) (sum, prod int) {
return x + y, x * y // 返回两个值
}

// 内置变量类型和关键词
func learnTypes() {
// 短声明给你所想。
str := "少说话多读书!" // String类型

s2 := `这是一个
可以换行的字符串`
// 同样是String类型

// 非ascii字符。Go使用UTF-8编码。
g := 'Σ' // rune类型,int32的别名,使用UTF-8编码

f := 3.14195 // float64类型,IEEE-754 64位浮点数
c := 3 + 4i // complex128类型,内部使用两个float64表示

// Var变量可以直接初始化。
var u uint = 7 // unsigned 无符号变量,但是实现依赖int型变量的长度
var pi float32 = 22. / 7

// 字符转换
n := byte('\n') // byte是uint8的别名

// 数组(Array)类型的大小在编译时即确定
var a4 [4] int // 有4个int变量的数组,初始为0
a3 := [...]int{3, 1, 5} // 有3个int变量的数组,同时进行了初始化

// Array和slice各有所长,但是slice可以动态的增删,所以更多时候还是使用slice。
s3 := []int{4, 5, 9} // 回去看看 a3 ,是不是这里没有省略号?
s4 := make([]int, 4) // 分配4个int大小的内存并初始化为0
var d2 [][]float64 // 这里只是声明,并未分配内存空间
bs := []byte("a slice") // 进行类型转换

// 切片(Slice)的大小是动态的,它的长度可以按需增长
// 用内置函数 append() 向切片末尾添加元素
// 要增添到的目标是 append 函数第一个参数,
// 多数时候数组在原内存处顺次增长,如
s := []int{1, 2, 3} // 这是个长度3的slice
s = append(s, 4, 5, 6) // 再加仨元素,长度变为6了
fmt.Println(s) // 更新后的数组是 [1 2 3 4 5 6]

// 除了向append()提供一组原子元素(写死在代码里的)以外,我们
// 还可以用如下方法传递一个slice常量或变量,并在后面加上省略号,
// 用以表示我们将引用一个slice、解包其中的元素并将其添加到s数组末尾。
s = append(s, []int{7, 8, 9}...) // 第二个参数是一个slice常量
fmt.Println(s) // 更新后的数组是 [1 2 3 4 5 6 7 8 9]

p, q := learnMemory() // 声明p,q为int型变量的指针
fmt.Println(*p, *q) // * 取值

// Map是动态可增长关联数组,和其他语言中的hash或者字典相似。
m := map[string]int{"three": 3, "four": 4}
m["one"] = 1

// 在Go语言中未使用的变量在编译的时候会报错,而不是warning。
// 下划线 _ 可以使你“使用”一个变量,但是丢弃它的值。
_, _, _, _, _, _, _, _, _, _ = str, s2, g, f, u, pi, n, a3, s4, bs
// 通常的用法是,在调用拥有多个返回值的函数时,
// 用下划线抛弃其中的一个参数。下面的例子就是一个脏套路,
// 调用os.Create并用下划线变量扔掉它的错误代码。
// 因为我们觉得这个文件一定会成功创建。
file, _ := os.Create("output.txt" 声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系 [邮箱地址] 删除

路过

雷人

握手

鲜花

鸡蛋

最新评论

返回顶部