请选择 进入手机版 | 继续访问电脑版
搜索
房产
装修
汽车
婚嫁
健康
理财
旅游
美食
跳蚤
二手房
租房
招聘
二手车
教育
茶座
我要买房
买东西
装修家居
交友
职场
生活
网购
亲子
情感
龙城车友
找美食
谈婚论嫁
美女
兴趣
八卦
宠物
手机

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

[复制链接]
查看: 41|回复: 0

3万

主题

3万

帖子

9万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
91650
发表于 2020-2-15 05:29 | 显示全部楼层 |阅读模式
接待拜候我的博客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
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Copyright © 2006-2014 WAYSFOCUS 影像 你 我 他,中国商业影视一站式解决平台 版权所有 法律顾问:高律师 客服电话:0791-88289918
技术支持:迪恩网络科技公司  Powered by Discuz! X3.2
快速回复 返回顶部 返回列表