笨办法学golang(二)

栏目: Go · 发布时间: 5年前

内容简介:这是Go语言学习笔记的第二篇文章。Go语言学习笔记参考书籍「Go语言编程」、Go官方标准库上篇文章中留了个练习,查询一下Go语言中fmt包下面

这是 Go 语言学习笔记的第二篇文章。

Go语言学习笔记参考书籍「Go语言编程」、Go官方标准库

前文提要

上篇文章中留了个练习,查询一下Go语言中fmt包下面 Print , Printf , Println 三个函数的使用。

//Print采用默认格式将其参数格式化并写入标准输出。如果两个相邻的参数不只是字符串,则会在输出之间添加空格
func Print(a ...interface{}) (n int, err error)
//Printf根据format参数生成格式化字符串并写入标准输出
func Printf(format string, a...interface{}) (n int, err error)
//Println采用默认格式化将其参数格式化并写入标准输出,在相邻参数的输出之间添加空格并在输出结束后添加换行符
func Println(a ...interface{}) (n int, err error)

上面函数定义看不懂没关系,后面学到接口就懂了。我们先借助例子来看一下这三个函数的区别:

a := "hello world"
b, c:= 123,456
fmt.Print(a,b,c, "\n")
fmt.Printf("%v%v%v\n", a,b,c) //一般使用%v来格式化输出
fmt.Println(a,b,c)

输出结果:

hello world123 456
hello world123456
hello world 123 456

可以看出,

Print
Printf
Println

变量

变量声明

Go语言中引入了关键字 var ,变量类型放在变量名之后。Go语言语句末尾不需要像 C语言 一样用 ; 作为结束标记。

var v1 int
var v2 string
var (
    v3 float64
    v4 *int
)//还可以将多个需要声明的变量放在一起,一般用于全局变量中
var v5, v6, v7 int //多变量声明

变量初始化

变量声明完需要初始化变量,有三种方式:

var v1 int = 10
var v2 = 11
v3 := 1.0

当不写变量类型的时候,Go语言可以从初始化表达式的右值推导出该变量的类型。如果变量初始化的时候未给变量指定初始值,则会程序会给变量一个的默认值,例如int型的默认值为0.

注意:第三种初始化方式中,变量(v3)必须是 未被声明过 的,否则会导致编译错误。

变量赋值

Go语言中认为变量初始化和变量赋值是两个概念。看例子:

var v1 string
v1 = "hello, world"
//Go语言中有类似 python 实现的多变量赋值功能
var i, j int = 1,2
i, j = j, i

同样的,Go语言函数也可以返回多个值。

匿名变量

Go语言中还有一种变量,成为匿名变量。像上面提到的函数返回多个值,就可以使用匿名变量来优化调用。

func getResult() (result string, err int){
    result := "success"
    err := 0
    return result, err
}
result, _ := getResult()

当我们只想得到 result 而不关心 err , 匿名变量的优势就体现出来了,同样的也可以用在 for 循环中。

常量

定义常量

const

用例子说话:

const myname string = "Morgan"
const zero = 0.0
const (
    number int64 = 1024
    result = "success"
)
const v1, v2, v3 = 1, 2.0, "good"
const offset = 3 >> 2
//以上都是正确的写法
const myPath = os.GetEnv("PATH")//build error, 因为os.GetEnv()只有运行期才能获得结果。

iota用法

iota 是Go语言预定的常量, iota 在每一个 const 关键字出现时被reset为0,然后在下一个iota出现之前,每出现一次 iota ,自动加1。

const (
    v0 = iota               //v0 = 0, iota被reset为0
    v1 = iota               //v1 = 1
    v2 = iota               //v2 = 2
)
const (
    v3 = iota * 10          //v3 = 0, iota被reset为0
    v4 = iota * 10          //v4 = 10
    v5 float32 = iota * 10  //v5 = 20.0
)

如果多个 const 语句的赋值表达式是一样的,则可以简写如下:

const (
    v0 = iota
    v1
    v2
)

今天学习了变量和常量的用法,尽管涉及的代码不多,但是编程语言的学习最忌眼高手低,因此我也按部就班的每一行都敲出来,并将程序运行。为此针对自己的学习中涉及的代码,整理了一个 repo , 希望后续学习能使它变得充实起来。


以上所述就是小编给大家介绍的《笨办法学golang(二)》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

浅薄

浅薄

[美]尼古拉斯·卡尔 / 刘纯毅 / 中信出版社 / 2015-11 / 49.00 元

互联网时代的飞速发展带来了各行各业效率的提升和生活的便利,但卡尔指出,当我们每天在翻看手机上的社交平台,阅读那些看似有趣和有深度的文章时,在我们尽情享受互联网慷慨施舍的过程中,我们正在渐渐丧失深度阅读和深度思考的能力。 互联网鼓励我们蜻蜓点水般地从多种信息来源中广泛采集碎片化的信息,其伦理规范就是工业主义,这是一套速度至上、效率至上的伦理,也是一套产量最优化、消费最优化的伦理——如此说来,互......一起来看看 《浅薄》 这本书的介绍吧!

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码

URL 编码/解码
URL 编码/解码

URL 编码/解码

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换