查看: 142|回复: 0

golang学习笔记(一):包,变量,函数

[复制链接]
发表于 2020-2-27 02:50:49 | 显示全部楼层 |阅读模式
欢迎访问我的博客github!
go 语言学习笔记第一弹,来自 gotour ,以后要常写笔记,把自己学习笔记记载下来,就算只是笔记也要多写。
好记性不如烂笔头,也要多锻炼自己的写作能力。
说真话,今天很累了,最近在折腾操作系统内核,因为原先写了个bootloader,现在想要转向 grub 来,遇到坑太多了,已经两天了。
还是接触一点新知识简单的东西,来缓冲一下,头脑迷含糊糊的。
package

每个Go程序由很多包构成。
程序都是从 main 包开始运行
该程序正在利用导入路径为“ fmt”和“ math / rand”的软件包
按照约定,程序包名称与导入路径的最后一个元素相同。
例如,“ math / rand”包包括以语句包rand开头的文件。
import

此代码将导入分组为带括号的“分解的”导入语句。
您还可以编写多个导入语句,例如:
  1. package mainimport (    "fmt"    "math")func main() {    fmt.Println(math.Pi)}
复制代码
但是利用分解式import语句是一种很好的样式。
导着名称

在Go中,假如名称以大写字母开头,则导出该名称。
例如,Pizza是一个导出的名称,Pi也是,它是从math包导出的。
pizza和pi不以大写字母开头,所以它们不被导出。
在导入包时,您只能引用它导出的名称。任何“未导出”的名称都不能从包外部访问。
  1. package mainimport (    "fmt"    "math")func main() {    fmt.Println(math.Pi)}
复制代码
函数

一个函数可以担当零个或多个参数。
在此示例中,add担当两个类型为int的参数。
请注意,类型位于变量名称之后。
  1. package mainimport "fmt"func add(x int, y int) int {    return x + y}func mins(x int, y int) int {    return x - y;}func main() {    fmt.Println(add(42, 13))    fmt.Println(mins(23, 11))}
复制代码
当两个或多个连续的命名函数参数共享一个类型时,可以从除最后一个之外的所有其他参数中省略该类型。
在这个例子中,我们缩短了
  1. x int,y int
复制代码
  1. x,y int
复制代码
  1. package mainimport "fmt"func add(x, y int) int {    return x + y}func main() {    fmt.Println(add(42, 13))}
复制代码
多个返回值

一个函数能返回多个返回值。
  1. package mainimport "fmt"func swap(a, b string) (string, string) {    return b, a}func main() {    a, b := swap("ai", "ni")    fmt.Println(a, b)}
复制代码
Named return values

Go的返回值可能会被命名。
假如是,则将它们视为定义在函数顶部的变量。
应该利用这些名称来记载返回值的含义。
没有参数的return语句返回指定的返回值。
这就是所谓的“naked” return。
裸返回语句应该只在短函数中利用,如下面的示例所示。
在较长的函数中,它们可能会陵犯可读性。
  1. package mainimport "fmt"func split(sum int) (x, y int) {    x = sum * 4 / 9    y = sum - x    return}func main() {    fmt.Println(split(17))}
复制代码
变量

var语句声明了一个变量列表;在函数参数列表中,类型是最后一个。
var语句可以是包级的,也可以是函数级的。在这个例子中我们可以看到两者。
  1. package mainimport "fmt"var c, python, java boolfunc main() {    var i int    fmt.Println(i, c, python, java)}
复制代码
初始化数值

var声明可以包含初始化器,每个变量一个。
假如有初始化,类型可以省略;该变量将接纳初始化器的类型。
  1. package mainimport "fmt"var i, j int = 1, 2func main() {    var c, python, java = true, false, "no!"    fmt.Println(i, j, c, python, java)}
复制代码
短变量初始化

在函数内部,可以利用:= short赋值语句来取代具有隐式类型的var声明。
在函数之外,每个语句都以一个关键字(var、func等)开头,因此:=结构不可用
  1. package mainimport "fmt"func main() {    var i, j int = 1, 2    k := 3    c, python, java := true, false, "no!"    fmt.Println(a ,i, j, k, c, python, java)}
复制代码
基本数据类型

go 语言的基本数据类型
  1. boolstringint  int8  int16  int32  int64uint uint8 uint16 uint32 uint64 uintptrbyte // alias for uint8rune // alias for int32     // represents a Unicode code pointfloat32 float64complex64 complex128
复制代码
该示例显示了几种类型的变量,而且与import语句一样,变量声明也可以“分解”为块。
int,uint和uintptr类型通常在32位系统上为32位宽,在64位系统上为64位宽。
当您需要整数值时,应该利用int,除非有特殊原因要利用大小或无符号整数类型。
[code]package mainimport (    "fmt"    "math/cmplx")var (    ToBe   bool       = false    MaxInt uint64     = 1

相关技术服务需求,请联系管理员和客服QQ:2753533861或QQ:619920289
您需要登录后才可以回帖 登录 | 用户注册

本版积分规则

帖子推荐:
客服咨询

QQ:2753533861

服务时间 9:00-22:00

快速回复 返回顶部 返回列表