GO-LANG学习笔记--基础语法篇(一)

lunjian · · 1595 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

GO-LANG学习笔记--基础语法篇(一)

变量

go语言的变量需要使用var关键字显式声明,如果给变量赋予了初始值的话,可以不声明变量类型,go可以自动推导变量的数据类型,如下面的变量s。

var x int
var f float32 = 1.6
var s = "abc"

也可以有更简单的办法来声明变量--在同一行声明多个变量,如下:

var x, f, s = 1, 1.6, "abc";

或者在代码块中声明多个变量,如下:

var (
        x int
        f float = 1.6
        s = "123"

在一个函数内部进行变量声明和赋值时,可以有更简便的方法:

func test() {
    x := 123;
}

多变量赋值时,程序会先计算所有的相关值后,一次从左到右为变量赋值,如下:

data,i :=[3]int{1,2,3}, 0
i,data[i] = 2, 100      //(i = 0) -> (i = 2), (data[0] = 100)

声明变量时可以只写"_",用于占位,如下:

func test()(int, string) {
    return 1, "abc"
}
func main() {
    _,s :=test()
    println(s)
}

golang 的编辑器会将声明但是未使用的变量当做错误处理,所以不要声明一些没用的变量,这样可以保证代码的美观以及程序的性能

var s = "abc"    //全局变量声明不使用没有问题
func main() {
    i:= 0               //由于变量i声明未使用,编译时会报错
}

需要注意变量的赋值和重新定义的区别,重新定以后变量就是一个全新的指针(c语言中概念),而赋值只是改变了变量的值,如下代码:

func main() {
    s:="abc"
    println(&s)
    s,s1 :="hello","world"
    println(&s,s,&s1,s1)
    
    {
        s,s1 := 1000, 30
        println(&s,s,&s1,s1)
    }
}

输出:

0xc82003ff38
0xc82003ff38 hello 0xc82003ff28 world  
0xc82003ff00 1000 0xc82003fef8 30

可以看到上面的变量s,s1的内存地址在重新赋值后没有变化,但是第三行输出时,内存地址发生了变化,这是由于变量s,s1在新的代码块中重新声明了,s和s1已经是全新的变量了,所以内存地址就发生了变化。


有疑问加站长微信联系(非本文作者)

本文来自:博客园

感谢作者:lunjian

查看原文:GO-LANG学习笔记--基础语法篇(一)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

1595 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传