分享
  1. 首页
  2. 文章

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

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

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

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

用户登录

没有账号?注册
(追記) (追記ここまで)

今日阅读排行

    加载中
(追記) (追記ここまで)

一周阅读排行

    加载中

关注我

  • 扫码关注领全套学习资料 关注微信公众号
  • 加入 QQ 群:
    • 192706294(已满)
    • 731990104(已满)
    • 798786647(已满)
    • 729884609(已满)
    • 977810755(已满)
    • 815126783(已满)
    • 812540095(已满)
    • 1006366459(已满)
    • 692541889

  • 关注微信公众号
  • 加入微信群:liuxiaoyan-s,备注入群
  • 也欢迎加入知识星球 Go粉丝们(免费)

给该专栏投稿 写篇新文章

每篇文章有总共有 5 次投稿机会

收入到我管理的专栏 新建专栏