美文网首页
Go基础学习之包,变量和函数

Go基础学习之包,变量和函数

作者: nextliving | 来源:发表于2018-04-22 13:03 被阅读12次

学习了一下Golang语言官网推荐的Go基础教程 - A Tour of Go,在此记录包,变量和方法部分的学习心得总结。

基础数据类型

Go中有以下基础数据类型:

bool

string

int int8 int16 int32 int64

uint uint8 uint16 uint32 uint64 uintptr

byte // alias for uint8

rune // alias for int32

// represents a Unicode code point

float32 float64

complex64 complex128

其中int,uint和uintptr类型在32位(bit)机器上通常是32个比特(32bits,即4Bytes),在64位机器上通常是64比特(64bits,即8Bytes)。

可输出名称(Exported names)

先贴一段选取自A tour of go的代码片段:


package main

import (

"fmt"

"math"

)

func main() {

fmt.Println(math.pi)

}

每一个Go程序由包(package)组成,Go程序从名为main的包开始执行,package用于标示本文件所属的包。如以上代码中是package main,表示这段代码所属的包是main,正好是程序开始执行的包。

import用于导入外部的包,以上代码中用括号(parenthesis)括起来并一次性导入所有外部包的方法是工厂方法,也是官方推荐的方法。当然也可以不用括号,一行一行导入,类似这样(不推荐):


import "fmt"

import "math"

接下来要说到可输出名称,Go语言中以大写字母开头的名称是可输出的,也就是外部可以访问到的。比如执行以上代码就会出错:


tmp/sandbox307383146/main.go:9: cannot refer to unexported name math.pi

tmp/sandbox307383146/main.go:9: undefined: math.pi

这是因为pi以小写字母p开头,外部无法访问。如果pi改成Pi,则错误消失。

函数(Functions)

还是先贴一段A tour of Go的代码:


package main

import "fmt"

func add(x int, y int) int {

return x + y

}

func main() {

fmt.Println(add(42, 13))

}

函数可以没有参数,也可以有很多参数,以上代码中方法add有2个int型参数x,y,返回值是int型。和C语言解析(parse)声明(declaration)使用“顺时针/螺旋法则(Clockwise/Spiral Rule)”不同,Go使用从左到右的法则。所以,对于以上函数add,从左到右解析,即函数add传递参数int x和int y,并返回int。

注意,Go函数可以返回多个值,以,分隔,比如下面这段代码中方法swap返回2个字符串:


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)

}

如果仔细看swap的参数列表,会发现x后面没有数据类型string,这就是即将讨论的问题。

变量(variable)

go使用var声明变量:


var x int

var y int

以上可以合并成一行:

var x, y int

如果只是声明变量而不赋值的话,Go会自动给变量赋值为零值,即

0 for numeric types,

false for the boolean type, and

"" (the empty string) for strings.

如果还要初始化的话,可以这样写:

var x, y int = 1, 2

在函数内部(不能是函数外部,或者说包的内部),可以使用:=直接给一个变量赋值而不必声明变量的类型(go有隐式类型推断):


package main

import "fmt"

func main() {

var i, j int = 1, 2

k := 3

c, python, java := true, false, "no!"

fmt.Println(i, j, k, c, python, java)

}

不同类型变量间赋值操作时,必须使用显式类型转换。

常量

Go使用const关键字定义常量,定义在函数内或者函数外(包内)均可。注意,定义常量时不能使用:=


package main

import "fmt"

const Pi = 3.14

func main() {

const World = "世界"

fmt.Println("Hello", World)

fmt.Println("Happy", Pi, "Day")

const Truth = true

fmt.Println("Go rules?", Truth)

}

参考

相关文章

  • Go基础学习之包,变量和函数

    学习了一下Golang语言官网推荐的Go基础教程 - A Tour of Go,在此记录包,变量和方法部分的学习心...

  • 30分钟搞定GO语言(一)

    基础篇 一开始,将学习 Go 程序的基本组件:包、变量和函数。 包 每个 Go 程序都是由包组成的。 程序运行的入...

  • 第02天(函数、工程管理)_03

    11_函数类型.go 12_回调函数.go 13_匿名函数和闭包.go 14_闭包捕获外部变量的特点.go 15_...

  • Go语言学习笔记(二)-基础语法

    Go语言结构 Go语言的基础组成有一下几个部分: 包声明 包引入 函数 变量 语句&表达式 注释 关于Go的语言组...

  • go语言学习

    Go 语言的基础组成有以下几个部分:包声明 引入包 函数 变量 语句 & 表达式 注释 当标识符(包括常量、变量、...

  • 二. Go(Go基础知识)

    一. Go基础语法 变量的定义 使用var关键字,可以放在函数内,或者直接放在包内,使用var()集中定义变量,使...

  • Golang筑基 —— 语言结构、语法篇

    Goalng结构Go 语言的基础组成有以下几个部分:包声明引入包函数变量语句 & 表达式注释下面以代码示例说明: ...

  • go的基础语法

    一.Go 语言的基础组成有以下几个部分: 包声明 引入包 函数 变量 语句 & 表达式 注释 二.示例程序hell...

  • Go语言探索 - 7(原创)

    Go语言基础系列博客用到的所有示例代码 在 上一篇文章主要学习了Go语言的函数定义、值传递和引用传递以及闭包函数。...

  • go语言变量

    go 语言变量 分成两种: 包内变量(包内) 局部变量 (函数内) 变量定义标准格式: var [变量名] [类...

网友评论

      本文标题:Go基础学习之包,变量和函数

      本文链接:https://www.haomeiwen.com/subject/lszqlftx.html